ミックスインで送信された値をプログラムでインスタンスにバインドしたいのですが、非表示の可変オブジェクトを使用するよりも不変の方法があるかどうか疑問に思っています。主にこれをレジストリに使用したいと思います。私の現在のアプローチは、構築後に厳密に不変ではありません、何か提案はありますか?
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)
}
これは私が望む結果を与えます
val n = new Odd with Even
println(n.values)
Set(5, 1, 6, 9, 2, 7, 3, 8, 4)