我有一个带覆盖的函数,当我向覆盖添加一个额外的参数时失败:
编译:
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方法有一个参数但是在添加第二个参数时停止工作时,curried函数的“推理”(不确定这是否是正确的术语)是否有效?
这是使用Scala版本2.10.3。