inheritance - uso - ¿Cuáles son las alternativas al subtipo de polimorfismo en scala?
uso de polimorfismo (1)
Las herramientas básicas para lograr el polimorfismo estático en Scala son
- Subtipificación (polimorfismo OO estándar de pantano)
- Tipo de parametrización (permite la varianza polimórfica y las restricciones)
- Auto-tipado (permite la restricción y especialización del polimorfismo OO)
- Conversión implícita (permite la construcción polimórfica post facto)
- Tipado estructural (permite polimorfismo basado en características, en lugar de tipo)
- Límites generales de tipo (lo que permite restricciones extremadamente precisas sobre el polimorfismo permitido)
- Coincidencia de patrones (permite el polimorfismo basado en la estructura de datos, similar a los tipos de datos abstractos)
- Tipos de mayor nivel (lo que permite polimorfismo sobre construcciones polimórficas)
Llamar a todas estas ''alternativas'' es probablemente la palabra incorrecta, ya que están muy bien integradas. No es raro que algunos algoritmos polimórficos se expresen mediante el uso de varias de estas herramientas en conjunto.
También vale la pena señalar el lugar de las comprensiones en el polimorfismo de Scala. Porque las comprensiones no parecen particularmente polimórficas. Debajo de la superficie, las comprensiones son solo azúcares sintácticos para llamadas a filter / map / flatMap, y las implementaciones de esos métodos tienden a ser altamente polimórficas. Por lo tanto, lo que parece ser comparativamente simple para bucles puede dar lugar a algunos efectos polimórficos realmente impresionantes.
Estoy interesado en conocer el conjunto completo de alternativas al subtipo de polimorfismo en scala.