柯里化是把接收多个参数的函数变成接收一个单一参数的函数,返回一个接收余下参数的新函数。
object CurryDemo extends App {
//创建一个普通方法
def add(x: Int, y: Int) = x + y
println(add(1, 2))
//柯里化后的方法
def curryAdd(x: Int)(y: Int) = x + y
private val function: Int => Int = curryAdd(1)
println(function(2))
//模拟柯里化的实现过程
def first(x: Int) = (y: Int) => x + y
private val intToInt: Int => Int = first(1)
private val i: Int = intToInt(2)
println(i)
private val ints = List(1, 2, 3)
println(ints.foldLeft(0)(_ + _))
}