Почему все базовые неизменяемые коллекции являются окончательными или запечатанными в scala?

Я написал трейт для сортировки итераций в Scala, и на создание класса, с которым я мог бы его смешивать, потребовалось почти столько же времени, сколько потребовалось для написания трейта. Почему было принято дизайнерское решение запретить пользователям писать такие вещи, как:

new List[Int] with SuperAwesomeTrait[Int]?

Теперь, если я хочу это сделать, мне нужно сделать какой-нибудь странный хак, например,

class StupidList extends LinearSeq {
  val inner = List()
  /* reimplement list methods by calling into inner */
} 

, а затем

new StupidList[Int] with SuperAwesomeTrait[Int].
9
задан nnythm 20 January 2012 в 21:00
поделиться