gpt4 book ai didi

scala - 如何克隆案例类实例并仅更改 Scala 中的一个字段?

转载 作者:行者123 更新时间:2023-12-03 04:10:05 25 4
gpt4 key购买 nike

假设我有一个案例类,代表不同社交网络上的人物角色。该类的实例是完全不可变的,并保存在不可变的集合中,最终由 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 类带有一个专门用于此用途的copy方法:

val newPersona = existingPersona.copy(sentMessages = 
existingPersona.sentMessages + newMessage)

关于scala - 如何克隆案例类实例并仅更改 Scala 中的一个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7249396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com