【发布时间】:2012-09-28 07:40:38
【问题描述】:
我刚接触 Scala,我似乎有点困惑为什么 Scala 提供“咖喱函数”,例如:
//curried function
def add(lhs: Int)(rhs: Int) = lhs + rhs
//so we can do partially binding like
val add1 = add(1)_
这很令人困惑,因为 Scala 已经为普通函数提供了“部分应用程序”,例如,
//normal function
def add(lhs: Int, rhs: Int) = lhs + rhs
//also supports partially application
val add1 = add(1, _: Int)
所以我的问题是:除了部分应用之外,在 Scala 中使用柯里化函数而不是普通函数还有其他意义吗?
EDT1:感谢您的回复。我想我从以下所有答案中学到了新东西。
【问题讨论】:
-
这个问题和所有答案实际上是指Scala对多个参数列表的支持,而不是函数柯里化的概念。正如@TomaszNurkiewicz 指出的那样,仅使用某些参数实际上会导致部分应用函数,无论该函数是具有单个参数列表还是多个参数列表。在实践中,我认为差异是微不足道的,但我仍然认为保持术语直截了当。