Escribí un rasgo para clasificar los iterables en Scala, y me llevó casi el mismo tiempo crear una clase con la que pudiera mezclarla, ya que me llevó a escribir el rasgo. ¿Por qué la decisión de diseño hecho para impedir que los usuarios de escribir cosas como:¿Por qué todas las colecciones base inmutables son definitivas o selladas en scala?
new List[Int] with SuperAwesomeTrait[Int]?
Ahora si quiero hacer esto, tengo que hacer algún artilugio extraño como,
class StupidList extends LinearSeq {
val inner = List()
/* reimplement list methods by calling into inner */
}
y luego
new StupidList[Int] with SuperAwesomeTrait[Int].
Sin embargo, la misma práctica me llevaría a lanzar lo inmóvil de la stdlib con una fuerza casi infinita. Contras, sin embargo, devuelve una nueva lista para que no esté roto. – Joshua
¿Por qué es esto un problema para 'List' más que para cualquier otra clase? –
@Joshua, no tengo idea de lo que estás hablando. Estoy usando la coincidencia de patrones para deconstruir algo. No estoy creando nada. –