Ho scritto un tratto per l'ordinamento di iterabili in Scala, e ci è voluto quasi tutto il tempo per creare una classe con cui avrei potuto mescolarlo con il tempo necessario per scrivere il tratto. Perché la decisione di progettazione è stato fatto per non consentire agli utenti di cose come la scrittura:Perché tutte le collezioni immutabili di base sono finali o sigillate in scala?
new List[Int] with SuperAwesomeTrait[Int]?
Ora, se io voglio fare questo, ho bisogno di fare un po 'strano fare altre cose come,
class StupidList extends LinearSeq {
val inner = List()
/* reimplement list methods by calling into inner */
}
e poi
new StupidList[Int] with SuperAwesomeTrait[Int].
Tuttavia la stessa pratica mi porterebbe a lanciare l'immutabile fuori dallo stdlib con una forza quasi infinita. Contro, tuttavia restituisce una nuova lista in modo da non essere rotto. – Joshua
Perché questo è un problema per 'List' più che per qualsiasi altra classe? –
@Joshua, non ho idea di cosa tu stia parlando. Uso la corrispondenza dei modelli per decostruire qualcosa. Non sto creando nulla. –