用于更新方法的半复制/克隆构造函数

时间:2011-12-17 00:44:43

标签: scala

我有许多格式为

的案例类
case class Cluster (id: Pk[Long],
        foo: Long,
        bar: String,
        env: String,
        name: String,
        deleted: Boolean = false) {
    def delete() = Cluster(id, foo, bar, env, name, true)
    def updateName(name: String) = Cluster(id, foo, bar, env, name, deleted)
    def updateFoo(foo: Long) = Cluster(id, foo, bar, env, name, deleted)
}

我尝试让所有类都不可变,即更新方法正在创建一个新实例。 一些类有更多的成员,并且具有克隆自身对象的更新方法具有不同的值,因为tedies容易出错。

如何提高效率?

1 个答案:

答案 0 :(得分:9)

您不需要您的方法。你只需要:

val c1 = Cluster(...)
val c2 = c1.copy(env = "new env") // Just list those fields you want to update.

copy()方法可用于“免费”的案例类。