试图掌握一些FP模式。
有人可以显示和解释一个返回匿名方法/ lambda的函数,该函数也是一个curried函数吗?
答案 0 :(得分:2)
以下是一个例子:
val foo: Int => Int => Int = x => y => x + y
函数foo
具有Int => Int => Int
的签名,这意味着为某个参数调用它(也称为部分应用程序),它返回签名Int => Int
的另一个函数:
val bar: Int => Int = foo(1)
您可以按以下方式致电:
val result = bar(2)
result == 3
答案 1 :(得分:2)
有人可以显示和解释一个返回匿名方法/ lambda的函数,该函数也是一个curried函数吗?
查看它的一个简单方法是创建一个currried sum方法:
def sum(x: Int): Int => Int = y => x + y
并称之为:
val curried: Int => Int = sum(1)
println(curried(2)) // will yield 3
如果要将方法转换为函数,可以使用eta扩展:
val sumFunc: Int => Int => Int = sum _
println(sumFunc(1)(2))