我知道有关此错误的其他一些问题,但其他问题非常清楚,为什么会出现错误。就我而言,我无法理解为什么。这是一个简短的例子:
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
^
这是&#34;正常&#34; /预期?
答案 0 :(得分:1)
B.text
一方面可以被视为从特征text
调用A
方法,另一方面可以视为来自B
的eta扩展方法,它将返回Seq[String] => String