Currying
Scala 函数柯里化(Currying)指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数。
def add(x:Int,y:Int)=x+y
柯里化后为:
def add(x:Int)(y:Int) = x + y
柯里化后的函数调用过程
val result = add(1) // 返回的result是一个匿名函数:(y:Int)=>1+y
val sum = result(2) // 调用匿名函数返回3
等同于 sum=add(1)(2)
foldLeft也是一个柯里化后的函数:
def foldLeft[B](z: B)(op: (B, A) => B): B = {
var result = z
this foreach (x => result = op(result, x))
result
}
val numbers = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val res = numbers.foldLeft(0)((m, n) => m + n)
println(res) // 55