Desidero associare a livello di codice i valori inviati in mixin a un'istanza e mi chiedo se esiste un modo più immutabile per farlo con un oggetto mutabile nascosto. Principalmente voglio usare questo per un registro. Il mio attuale approccio non è rigorosamente immutabile dopo la costruzione, qualche suggerimento?Scala che registra i risultati del costruttore di mixin immutabilmente
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)
}
Questo dà il risultato che voglio di
val n = new Odd with Even
println(n.values)
Set(5, 1, 6, 9, 2, 7, 3, 8, 4)
ho implementato questo approccio in un contenitore Scala qui http://higher-state.blogspot.co.uk/2013/03/scala-210 -simple-di-container.html –