我有许多格式为
的案例类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容易出错。
如何提高效率?
答案 0 :(得分:9)
您不需要您的方法。你只需要:
val c1 = Cluster(...)
val c2 = c1.copy(env = "new env") // Just list those fields you want to update.
copy()方法可用于“免费”的案例类。