相关疑难解决方法(0)

如何克隆案例类实例并在Scala中只更改一个字段?

假设我有一个代表角色的案例类,不同社交网络上的人.该类的实例是完全不可变的,并且保存在不可变集合中,最终由Akka actor修改.

现在,我有一个包含许多字段的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)
Run Code Online (Sandbox Code Playgroud)

注意我必须指定所有字段,即使只有一个更改.有没有办法克隆existingPersona并只替换一个字段,而不指定所有不更改的字段?我可以将其作为特征编写并将其用于我的所有案例类吗?

如果Persona是一个类似Map的实例,那么很容易做到.

scala

205
推荐指数
3
解决办法
6万
查看次数

标签 统计

scala ×1