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

Why "ambiguous reference to overloaded definition" for methods with different signatures?

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

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 ^

这是"normal"/预期的吗?

B.text 一方面可以认为是从特征 A 调用 text 方法,另一方面可以认为是 B 的 eta 扩展方法,它将return Seq[String] => String

类型的函数