Скажімо, у мене є кейс-клас, який представляє персон, людей у різних соціальних мережах. Екземпляри цього класу повністю незмінні і зберігаються у незмінних колекціях, щоб їх згодом змінив актор Акка.
Тепер у мене є клас справ із багатьма полями, і я отримую повідомлення про те, що я повинен оновити одне з полів, приблизно так:
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)
Зауважте, що я маю вказати всі поля, навіть не змінюючи лише одне. Чи є спосіб клонувати існуючуПерсону та замінити лише одне поле, не вказуючи всі поля, які не змінюються? Чи можу я записати це як ознаку і використовувати його для всіх моїх кейсів?
Якби Персона був екземпляром, подібним до карти, це було б легко зробити.