2

当我向覆盖添加附加参数时,我有一个覆盖失败的函数:

这编译:

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。

4

0 回答 0