Currying
Scala 函數(shù)柯里化(Currying)指的是將原來接受兩個參數(shù)的函數(shù)變成新的接受一個參數(shù)的函數(shù)的過程。新的函數(shù)返回一個以原有第二個參數(shù)為參數(shù)的函數(shù)。
def add(x:Int,y:Int)=x+y
柯里化后為:
def add(x:Int)(y:Int) = x + y
柯里化后的函數(shù)調用過程
val result = add(1) // 返回的result是一個匿名函數(shù):(y:Int)=>1+y
val sum = result(2) // 調用匿名函數(shù)返回3
等同于 sum=add(1)(2)
foldLeft也是一個柯里化后的函數(shù):
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