Какие есть альтернативы полиморфизму подтипа в скале? - PullRequest
15 голосов
/ 29 августа 2010

Мне интересно узнать полный набор альтернатив полиморфизму подтипа в скале

1 Ответ

22 голосов
/ 30 августа 2010

Основными инструментами для достижения статически проверяемого полиморфизма в Scala являются

  • Подтип (болотный OO-полиморфизм)
  • Параметризация типа (допускает полиморфную дисперсию и ограничения)
  • Самотипирование (допускает ограничение и специализацию ОО-полиморфизма)
  • Неявное преобразование (допускает полиморфное построение постфактум)
  • Структурная типизация (допускает полиморфизм на основе признаков, а не типа)
  • Границы общего типа (допускающие чрезвычайно точные ограничения на разрешенный полиморфизм)
  • Сопоставление с образцом (допускает полиморфизм на основе структуры данных, аналогично абстрактным типам данных)
  • Высший родтипы (допускающие полиморфизм по полиморфным конструкциям)

Вызывать все эти «альтернативы», вероятно, неверное слово, поскольку они так хорошо интегрированы.Нередко некоторые полиморфные алгоритмы могут быть выражены с использованием нескольких из этих инструментов в сочетании.

Также стоит отметить место для понимания в полиморфизме Scala.Для понимания не кажутся особенно полиморфными.Ниже поверхности для-понимания просто синтаксический сахар для вызовов filter / map / flatMap, и реализации этих методов имеют тенденцию быть очень полиморфными.Таким образом, то, что выглядит как сравнительно простые циклы for, может привести к некоторым действительно впечатляющим полиморфным эффектам.

...