Diyelim ki kişilikleri, farklı sosyal ağlardaki insanları temsil eden bir vaka sınıfım var. Bu sınıfın örnekleri tamamen değişmezdir ve sonunda bir Akka oyuncusu tarafından değiştirilmek üzere değişmez koleksiyonlarda tutulur.
Şimdi, birçok alanı olan bir vaka sınıfı var ve ben alanlardan birini, bu gibi bir şey güncelleştirmek gerektiğini söyleyen bir ileti alıyorum:
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)
Yalnızca tek bir değişiklik olsa bile tüm alanları belirtmem gerekiyor. Var olanPersona'yı kopyalamanın ve değişmeyen tüm alanları belirtmeden yalnızca bir alanı değiştirmenin bir yolu var mı? Bunu bir özellik olarak yazabilir ve tüm vaka sınıflarım için kullanabilir miyim?
Persona Harita benzeri bir örnek olsaydı, bunu yapmak kolay olurdu.