Допустим, у меня есть класс кейсов, который представляет персон, людей в разных социальных сетях.Экземпляры этого класса являются полностью неизменяемыми и хранятся в неизменяемых коллекциях, которые в конечном итоге будут изменены актером 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)
Обратите внимание, что я должен указать все поля, хотя только одно из них изменяется.Есть ли способ клонировать существующееPersona и заменить только одно поле, не указывая все поля, которые не меняются?Могу ли я написать это как черту и использовать ее для всех моих классов дел?
Если бы Persona был экземпляром, подобным Map, это было бы легко сделать.