返回一个curried函数的匿名函数/ lambda

时间:2016-11-24 16:36:54

标签: scala

试图掌握一些FP模式。

有人可以显示和解释一个返回匿名方法/ lambda的函数,该函数也是一个curried函数吗?

2 个答案:

答案 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))