Я пытаюсь расширить класс List
, чтобы дать ему более простой способ сравнения размеров, однако я сталкиваюсь с ошибкой в заголовке...
Вот мой код:
implicit class RichList[A, B](input: List[A]) {
def >(that: List[B]): Boolean = input.size > that.size
def <(that: List[B]): Boolean = input.size < that.size
}
Идея заключалась в том, что, поскольку все, что он делает, это сравнивает размеры списков, их типы могут быть разными, и это не имеет значения, однако, когда я пытаюсь это сделать:
val test = List(1,2,3,4) < List(1,2,3,4,5)
Я получаю вышеупомянутую ошибку. Если я удалю B и установлю that
типа List[A]
, он будет работать нормально, но тогда я не смогу использовать списки, содержащие 2 разных типа...
Почему A и B не могут быть одного типа? Или я что-то упускаю?
Редактировать: Хорошо, я нашел решение ошибки, которое довольно простое:
implicit class RichList[A](input: List[A]) {
def >[B](that: List[B]): Boolean = input.size > that.size
def <[B](that: List[B]): Boolean = input.size < that.size
}
Однако мой вопрос остается в силе; почему я не могу по другому?
def >(that: List[_]): ....
, так как вам не нужен фактический тип - person serejja   schedule 07.04.2014