Каковы альтернативы политизму подтипов в scala?

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

Ответы

Ответ 1

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

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

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

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