我正在制作一个战略游戏,并尝试应用我学到的东西,尝试使用不可变数据。在我的游戏中我有单位,这些单位可以有不同的特殊功能。例如有些飞机可以隐藏自己。我搜索是一种方法,能够做到某种通过继承更新不可变的数据结构
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 –