В главе 22 книги «Программирование на Scala» класс ::
(минусы) определяется как
final case class ::[T](hd: T, tl: List[T]) extends List[T] {
//...
}
::
в классе List
определяется следующим образом:
def ::[U >: T](x: U): List[U] = new scala.::(x, this)
Почему новый
требуется для создания экземпляра final
case
класс ::
? Это чисто для устранения неоднозначности?