What are the alternatives to subtype polymorphism in scala?

I'm interested to know the complete set of alternatives to subtype polymorphism in scala.

15
задан Channing Walton 29 August 2010 в 19:52
поделиться

1 ответ

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

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

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

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

22
ответ дан 1 December 2019 в 03:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: