假设我有一个案例类,代表不同的社交网络上的人物角色。该类的实例是完全不可变的,并保存在不可变的集合中,最终由Akka演员对其进行修改。
现在,我有一个包含许多字段的case类,并且收到一条消息,提示我必须更新其中一个字段,如下所示:
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的实例,则很容易做到。