我正在讨论我维护的 Scala 样式指南中的 一个 href = “ http://davetron5000.github.com/scala-style/Declaration/method/currying.html”rel = “ noReferrer”> 多参数列表 。我已经意识到 咖喱有两种方式,我想知道用例是什么:
def add(a:Int)(b:Int) = {a + b}
// Works
add(5)(6)
// Doesn't compile
val f = add(5)
// Works
val f = add(5)_
f(10) // yields 15
def add2(a:Int) = { b:Int => a + b }
// Works
add2(5)(6)
// Also works
val f = add2(5)
f(10) // Yields 15
// Doesn't compile
val f = add2(5)_
风格指南错误地暗示这两者是相同的,而实际上它们明显不是。该指南试图强调创建的 curry 函数,而且,虽然第二种形式不是“按部就班”curry,但它仍然与第一种形式非常相似(尽管可以说更容易使用,因为您不需要 _
)
从那些使用这些形式的人那里,对于什么时候使用一种形式而不是另一种形式的共识是什么?