Метод переопределения типа (String, Int, Boolean) => Double имеет несовместимый тип - PullRequest
2 голосов
/ 23 апреля 2020

следующий код должен проверять afaik, но это не так. Я бы предпочел не давать имена типам аргументов, так как они могут меняться в арности и типе.

trait Foobar[K] {
     def method: K => Double
}
class Test extends Foobar[(String, Int, Boolean)] {
     override def method: (String, Int, Boolean) => Double = (_, _, _) => 3.0
      // This also fails
     // override def method: (String, Int, Boolean) => Double = { case (_, _, _) => 3.0 }
}

Ошибка:

переопределение метода метода в признаке Foobar типа = > ((String, Int, Boolean) => Double; метод метода имеет несовместимый метод def override типа: (String, Int, Boolean) => Double = (, , _) => 3,0

1 Ответ

3 голосов
/ 23 апреля 2020

Это очень тривиальная, но очень утомительная проблема.

(String, Int, Boolean) => Double. является функцией трех аргументов для двойного.
Но вам нужна функция одного аргумента (кортеж из трех элементов) для двойного.

Попробуйте с:

class Test extends Foobar[(String, Int, Boolean)] {
  override def method: ((String, Int, Boolean)) => Double = {
    case (_, _, _) => 3.0
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...