当我向覆盖添加附加参数时,Overriden函数无法编译

时间:2013-10-18 21:43:20

标签: scala override currying

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

编译:

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。

0 个答案:

没有答案