柯里化
代码
/*
柯里化 把接收到多个参数的函数变成接受一个单一参数的函数,
返回一个接受余下参数的新函数
*/
object CurrDemo extends App{
//创建一个普通函数
def add(x:Int,y:Int)=x+y
println("普通方法(add):"+add(1,3))
//柯里化后的方法
def curryAdd(x:Int)(y:Int):Int=x+y
println("柯里化后的方法(curryAdd):"+curryAdd (1) (3))
//柯里化的实现过程
def first(x:Int)=(y:Int)=>{
x+y
}
//first方法调用
val res1 = first(1)
val res2 =res1(3)
println("res2(first):"+res2)
//curryAdd方法调用
val one = curryAdd(1)_ //注意必须加下划线
println("one(curryAdd):"+one(4))
val list=Array(12,3,4)
println( list.foldLeft(0)(_+_) )
}
运行结果
普通方法(add):4
柯里化后的方法(curryAdd):4
res2(first):4
one(curryAdd):5
19
Process finished with exit code 0