Почему «неоднозначная ссылка на перегруженное определение» для методов с разными сигнатурами? - PullRequest
0 голосов
/ 24 апреля 2018

Я знаю, что есть ряд других вопросов об этой ошибке, но другие довольно ясно, почему есть ошибка. В моем случае я не могу понять почему. Вот краткий пример:

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 ^

Это "нормально" / ожидается?

1 Ответ

0 голосов
/ 24 апреля 2018

B.text можно рассматривать, с одной стороны, как вызывающий text метод из черты A, а с другой стороны, как расширенный eta-метод из B, который будет возвращать функцию типа Seq[String] => String

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...