为什么要"ambiguous reference to overloaded definition"具有不同签名的方法?



我知道有关此错误还有许多其他问题,但是其他问题很清楚为什么会出现错误。就我而言,我不明白为什么。这是一个简短的例子:

trait A {
  def text: String = "abc"
}
case object B extends A {
  def text(s: Seq[String]): String = s.mkString
}

现在,调用B.text我希望能明确解决从基本特征继承的方法,因为对象B中的一个甚至不匹配调用签名...但是,错误!

<console>:13: error: ambiguous reference to overloaded definition, both method text in object B of type (s: Seq[String])String and method text in trait A of type => String match expected type ? B.text ^

这是"正常"/预期的?

B.text可以在一方面视为从特质 A调用 text方法,另一方面是从 B中返回 Seq[String] => String

的函数的ETA扩展方法

相关内容

最新更新