我正在製作一個戰略遊戲,並嘗試應用我學到的東西,嘗試使用不可變數據。在我的遊戲中我有單位,這些單位可以有不同的特殊功能。例如有些飛機可以隱藏自己。我搜索是一種方法,能夠做到某種通過繼承更新不可變的數據結構
abstract class Units {
val life:Int
}
trait Hidable { self: Units =>
val hided:Boolean
def hide:Units with Hidable= ....
}
,而不必複製粘貼:
def hide = copy(hided=true)
上每一個案件類混入Hidable。
所以讓它變得可變,但只能在課堂上,所以你可以改變它。 –
我真的需要返回一個新的Hidable實例。 – Atol
只有使用宏或工具箱進行元編程才能爲您提供幫助,因爲每個case類的'copy'方法都是由編譯器生成的。你可以在這裏瞭解更多關於它:http://stackoverflow.com/questions/10373318/mixing-in-a-trait-dynamically –