Подтвердить что ты не робот

Scala MapLike, ListLike, SeqLike и т.д., как каждый из них сравнивается с Map, List, Seq?

Может кто-то, пожалуйста, помогите мне понять Scala различные черты "Like" в API коллекции. Я читал и пытаюсь сравнивать каждого без везения. Я думаю, что я вижу, что Map, например, расширяет MapLike - добавляет 2 конкретных метода. Но это ставит вопрос о том, зачем вообще это делать? Почему не только 1 признак карты в API Collections вместо Map и MapLike?

Спасибо!

4b9b3361

Ответ 1

Лучшим источником этих данных является Мартин Одерский и Лекс Лоун "Что нового в Scala 2.8: Архитектура Scala Коллекции" :

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

Вся статья чрезвычайно полезна, если вы хотите интегрировать свои собственные классы коллекции с API Collections или просто хотите более глубокое понимание того, как работает библиотека.