Angenommen, ich habe eine Fallklasse, die Personas repräsentiert, Menschen in verschiedenen sozialen Netzwerken. Instanzen dieser Klasse sind vollständig unveränderlich und werden in unveränderlichen Sammlungen aufbewahrt, die schließlich von einem Akka-Schauspieler modifiziert werden.
Jetzt habe ich eine Fallklasse mit vielen Feldern und erhalte die Meldung, dass ich eines der Felder aktualisieren muss.
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)
Beachten Sie, dass ich alle Felder angeben muss, obwohl sich nur eines ändert. Gibt es eine Möglichkeit, vorhandene Personen zu klonen und nur ein Feld zu ersetzen, ohne alle Felder anzugeben, die sich nicht ändern? Kann ich das als Merkmal schreiben und für alle meine Fallklassen verwenden?
Wenn Persona eine kartenähnliche Instanz wäre, wäre dies einfach.