Ich mag programmatisch Werte binden, in Mixins zu einer Instanz gesendet, und ich frage mich, ob es eine unveränderliche Art und Weise, dies zu tun, dann mit einem versteckten veränderlichen Objekt. In erster Linie möchte ich dies für eine Registrierung verwenden. Mein aktueller Ansatz ist nach der Konstruktion nicht unbedingt unveränderbar, irgendwelche Vorschläge?Scala Registrierung mixin Konstruktor Ergebnisse unwandelbar
trait Numbers {
lazy val values = holding
private var holding = Set.empty[Int]
protected def includes(i:Int) {
holding += i
}
}
trait Odd extends Numbers{
includes(1)
includes(3)
includes(5)
includes(7)
includes(9)
}
trait Even extends Numbers {
includes(2)
includes(4)
includes(6)
includes(8)
}
Dies gibt das Ergebnis, das ich von
val n = new Odd with Even
println(n.values)
Set(5, 1, 6, 9, 2, 7, 3, 8, 4)
ich diesen Ansatz umgesetzt haben hier in einem Scala Container http://higher-state.blogspot.co.uk/2013/03/scala-210 -simple-di-container.html –