通过继承更新不可变数据结构

时间:2012-11-11 01:33:07

标签: scala immutability scalaz subtyping lenses

我正在制作一个战略游戏,我尝试应用我学到的东西,尝试使用不可变数据。在我的游戏中我有单位,这些单位可以有不同的特殊功能。例如,一些飞机可以隐藏自己。我搜索的是一种能够做某种

的方法
abstract class Units {
val life:Int
}

trait Hidable { self: Units => 
val hided:Boolean
def hide:Units with Hidable= ....
}

无需复制粘贴:

def hide = copy(hided=true)

在mixin Hidable的每个case类上。

1 个答案:

答案 0 :(得分:1)

更新不可变数据结构的常用方法是使用lenses。 有compiler plugin为您的代码生成镜头,但它不是非常适合生产的镜头。它也可用于旧的scalaz。

这是related question