当我向覆盖添加附加参数时,我有一个覆盖失败的函数:
这编译:
object Test {
def foo[T](x: Boolean)(y: Boolean): Boolean = x == y
def bar[T](y: String, x: T => Boolean)(z: => T) {}
def bar[T](x: String)(z: => T) {}
bar("qwer", foo(false)) {
true
}
bar("qwer") {
true
}
}
但是,如果我在第二个 bar 方法中添加第二个参数:
def bar[T](x: String, y: Int)(z: => T) {}
bar("qwer", foo(false)) {
true
}
bar("qwer", 123) {
true
}
然后程序无法编译并出现错误:
error: missing arguments for method foo in object Test;
follow this method with `_' if you want to treat it as a
partially applied function
我的问题是:为什么当第二个 bar 方法具有一个参数但在添加第二个参数时停止工作时,咖喱函数的“推断”(不确定这是否是正确的术语)起作用?
这是 Scala 版本 2.10.3。