【发布时间】:2011-11-07 03:25:27
【问题描述】:
假设我有一个代表人物角色的案例类,即不同社交网络上的人。该类的实例是完全不可变的,并且保存在不可变的集合中,最终由 Akka actor 修改。
现在,我有一个包含许多字段的案例类,我收到一条消息说我必须更新其中一个字段,如下所示:
case class Persona(serviceName : String,
serviceId : String,
sentMessages : Set[String])
// Somewhere deep in an actor
val newPersona = Persona(existingPersona.serviceName,
existingPersona.serviceId,
existingPersona.sentMessages + newMessage)
请注意,我必须指定所有字段,即使只有一个更改。有没有办法克隆 existingPersona 并只替换一个字段,而不指定所有不变的字段?我可以把它写成一个特征并将它用于我的所有案例类吗?
如果 Persona 是一个类似 Map 的实例,那将很容易做到。
【问题讨论】:
标签: scala