==> 常用函数讲解
---> map 作用于列表中的每一个元素
1
2
3
4
5
6
7
8
|
// 定义一个列表
val
list
=
List(
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
)
// list 列表中的所有元素乘以2
list.map((i
:
Int)
=
> i*
2
)
// 使用 foreach 做相同的操作,foreach 不会返回值
list.foreach((i
:
Int)
=
> i*
2
)
|
---> filter 过滤返回值为 False 的元素
1
2
3
4
5
6
|
val
list
=
List(
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
)
list.filter((i
:
Int)
=
> i
%
2
==
0
)
// 返回结果为:List[Int] = List(2, 4, 6, 8)
// 还可写作
num.filter(
_%
2
==
0
)
|
---> zip 将两个数组合并
1
2
3
|
List(
1
,
2
,
3
).zip(List(
4
,
5
,
6
))
// 输出结果为
List[(Int, Int)]
=
List((
1
,
4
), (
2
,
5
), (
3
,
6
))
|
---> partition 将符合过滤规则的元素放在一个分区,将不符合过滤规则的放在别一个分区
1
2
|
List(
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
).partition((i
:
Int)
=
> i
%
2
==
0
)
// 输出结果为:(List[Int], List[Int]) = (List(2, 4, 6, 8),List(1, 3, 5, 7, 9))
|
---> find 找到列表中第一个符合规则的元素
---> flatten 压平操作,将三维数组转化成二维数组或将二维数组转化为一维数组,需要注意的是,转化时必须保证每个元素还能够再进行提取,否则会报错
1
2
3
4
5
6
7
8
9
10
11
12
13
|
List(List(
1
,List(
2
,
3
,
4
)), List(List(
5
,
6
,
7
),List(
8
,
9
))).flatten
// 如果要继续进行压平操作,刚会报错
List(List(
1
,List(
2
,
3
,
4
)), List(List(
5
,
6
,
7
),List(
8
,
9
))).flatten.flatten
error
:
<console>
:
12
:
error
:
No
implicit
view available from Any
=
> scala.collection.GenTraversableOnce[B].
List(List(
1
,List(
2
,
3
,
4
)), List(List(
5
,
6
,
7
),List(
8
,
9
))).flatten.flatten
// 若要继续压平操作,需将处理处理修改一下
List(List(List(
1
),List(
2
,
3
,
4
)), List(List(
5
,
6
,
7
),List(
8
,
9
))).flatten.flatten
// 结果为:List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
|
---> flatMap 相当于 Map 与 flatten 两个功能的结合体
1
2
3
4
5
6
|
val
list
=
List(List(
1
,
2
,
3
),List(
4
,
5
,
6
))
// 此处的 x 相当于将源数据 flatten 压平后得到的结果,然后对每个元素进行操作
list.flatMap(x
=
>x.map(
_
*
2
))
// 此条语句等价于以下两步操作
val
x
=
list.flatten
x.map(
_
*
2
)
|
==> 闭包 函数的嵌套
---> 定义普通函数:
1
|
def
myfun(x
:
Int, y
:
Int)
:
Int
=
x * y
|
---> 采用闭包
1
2
3
4
5
6
7
8
|
// 定义一个闭包函数,其中,x 为乘数因子,即:乘以的倍数(我自己理解为被乘数),y 是使用函数传入的参数
def
myfun(x
:
Int)
=
(y
:
Int)
=
> x * y
// 第一步先定义自己函数的模型
val
mytest
=
myfun(
2
)
// 使用自己定义好的函数模型,传入参数
mytest(
20
)
|
==> 柯里化 一个数学家的名子,其本质是将一个多参数函数转换成函数链,每个节点上都有一个单一参数的函数
举例:
1
2
3
|
def
add(x
:
Int, y
:
Int)
:
Int
=
x + y
def
add(x
:
Int)(y
:
Int)
=
x + y
|
本文转自 菜鸟的征程 51CTO博客,原文链接:http://blog.51cto.com/songqinglong/2071922