我碰到一些代码排在斯卡拉类似的形式是这样的:斯卡拉语法帮助柯里
def test1(f : Int => Int)(x : Int) = x + f(x)
def test2(f : Int => Int)(x : Int) = f(x)
test2(test1(x => 2*x))(2)
我很困惑,所以功能测试1需要一个功能和诠释作为参数,并返回一个函数,对?那么如何test1(x => 2*x)
有效,并返回一个函数test2?显然它需要2个整数参数,但为什么? test2(test1(x => 2*x))(2)
声明如何展开?
在此先感谢。
好的,我可以这样说,在这种情况下,Scala使用eta-expansion来实现函数currying,但它鼓励我们认为test1返回一个函数? – ekinrf
类别。有很多文档指出多个参数列表实现了currying,但是您不能仅仅通过真正的卷曲就可以盲目地使用它,并且大多数具有多个参数列表的方法实例并不打算部分应用,例如, 'list.foldLeft(0)'很少见。看看我的新编辑 - 我展示了如何创建一个真正的咖喱方法/函数。 – wingedsubmariner