【发布时间】:2014-11-27 11:06:10
【问题描述】:
当使用以下语法定义启用柯里化的函数时:
def sum(x: Int)(y: Int)(z: Int) = x + y + z
仍然必须在 sum 的柯里化调用后加上 _:
sum _
sum(3) _
sum(3)(2) _
否则编译器会报错。
所以我求助于:
val sum = (x: Int) => (y: Int) => (z: Int) => x + y + z
没有_ 也可以工作。
现在的问题是:为什么多参数列表版本需要 _ 才能启动柯里化?为什么这 2 个版本的语义在所有情况下都不同?
另外,后一个版本是否不受欢迎?它有任何警告吗?
【问题讨论】:
标签: scala functional-programming parameter-passing currying