假设我有一个案例类,代表不同社交网络上的人物角色。该类的实例是完全不可变的,并保存在不可变的集合中,最终由 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)
请注意,我必须指定所有字段,即使只有一个字段发生变化。有没有一种方法可以克隆现有的Persona并仅替换一个字段,而不指定所有不更改的字段?我可以将其写为特征并将其用于我的所有案例类吗?
如果 Persona 是一个类似 Map 的实例,那就很容易做到。
case class
配有一个copy
专门用于这种用法的方法:
val newPersona = existingPersona.copy(sentMessages =
existingPersona.sentMessages + newMessage)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)