本文共 751 字,大约阅读时间需要 2 分钟。
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 ,如需转载请自行联系原作者