Ответ 1
Лучшим источником этих данных является Мартин Одерский и Лекс Лоун "Что нового в Scala 2.8: Архитектура Scala Коллекции" :
Библиотека коллекции Scala избегает дублирования кода и достигает принцип "того же результата", используя общие строители и обходы над коллекциями в так называемых чертах реализации. Эти черты называются суффиксом
Like
; например,IndexedSeqLike
- это признак реализации дляIndexedSeq
, и аналогичным образом,TraversableLike
- это признак реализации дляTraversable
. Классы коллекций, такие какTraversable
илиIndexedSeq
, наследуют все их конкретные способы реализации этих признаков. Черты реализации имеют два типа параметров вместо одного для обычные коллекции. Они параметризуют не только по тип элемента, но также и над типом представления коллекции, то есть тип базовой коллекции, такой какSeq[I]
илиList[T]
...
Вся статья чрезвычайно полезна, если вы хотите интегрировать свои собственные классы коллекции с API Collections или просто хотите более глубокое понимание того, как работает библиотека.