14.7 函数柯里化
柯里化(currying, 以逻辑学家 Haskell Brooks Curry 的名字命名), 指定是把原来接收两个参数的函数变成新的接收一个参数的函数的过程.
新的函数会返回一个以原来的函数的第二个参数作为参数的函数.
看下面的例子: 计算两个数的乘积
object CurryingDemo1 {
def main(args: Array[String]): Unit = {
// 如果想计算 6 * 7, 6 * 8, 6 * 9 ...
println(mul(6)(7))
println(mul(6)(8))
println(mul(6)(7))
}
// 正常写法
def normalMul(x: Int, y: Int) => x * y
// 函数柯里化
def mul(x: Int): Int => Int = {
y => x * y
}
}
简写的柯里化写法
object CurryingDemo1 {
def main(args: Array[String]): Unit = {
println(mul(3)(4))
println(mul(4)(5))
val foo: Int => Int = mul(6)
println(foo(7))
println(foo(8))
}
// 柯里化简写
def mul(x: Int)(y: Int): Int = x * y
}