04 Scala Currying

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容