【发布时间】:2015-03-27 06:09:02
【问题描述】:
我正在学习 Scala。我有一个可以返回另一个函数的 Scala 函数。我在 Scala 中遇到了 3 种方法(可能还有更多)。在这个特定的代码中,第 3 个选项似乎无法编译,但我在其他地方看到过这种技术,但无法弄清楚为什么它在这种情况下不起作用。
在这个相当人为的示例中,我有一个函数,它接受一个 Int 并返回一个将 Int 映射到 Boolean 的函数。
def intMapper1(elem: Int): Int => Boolean = {
def mapper(x: Int): Boolean =
x == elem
mapper
}
def intMapper2(elem: Int): Int => Boolean = (x: Int) => x == elem
def intMapper3(elem: Int)(x: Int) = x == elem
val m1 = intMapper1(2)
val m2 = intMapper2(4)
val m3 = intMapper3(6)
我得到编译错误: 错误:(35, 22) 在对象 FunSets 中缺少方法 intMapper3 的参数; 如果您想将其视为部分应用的函数,请使用 `_' 遵循此方法 val m3 = intMapper3(6) ^
【问题讨论】: