1、Curring函数 定义?
将原来接收两个参数的一个函数,转换为两个函数,第一个函数接收原先的第一个参数,然后返回接收原先第二个参数的第二个函数。
在函数调用的过程中,就变为了两个函数连续调用的形式
在marathon源码以及Spark的源码中,也有体现,所以对()()这种形式的Curring函数,要理解。
2、例子:
1
2
3
4
5
6
7
8
9
10
11
12
|
object
CurryingTest {
def
main(args
:
Array[String])
:
Unit
=
{
println(
"---->:\t"
+ sum(
3
,
4
))
println(
"---->:\t"
+ sum
2
(
5
))
println(
"---->:\t"
+ sum
2
(
5
)(
1
))
// 柯里函数
println(
"---->:\t"
+ sum
3
(
4
)(
8
))
}
def
sum(a
:
Int, b
:
Int)
=
a + b
def
sum
2
(a
:
Int)
=
(b
:
Int)
=
> a + b
// 由sum函数转换成sum3函数时的中间过程
def
sum
3
(a
:
Int)(b
:
Int)
=
a + b
}
|
其实,柯里函数到底用在什么场景下,并没有真正理解。
目前,仅仅是,只要看到
1
|
sum
3
(a
:
Int)(b
:
Int)
=
a + b
|
这种形式,可以直接理解成 或者等价于
1
|
sum(a
:
Int, b
:
Int)
=
a + b
|
形式
本文转自故新51CTO博客,原文链接:http://blog.51cto.com/xingej/1963456 ,如需转载请自行联系原作者