Katakanlah saya memiliki kelas kasus yang mewakili kepribadian, orang-orang di jejaring sosial yang berbeda. Contoh-contoh dari kelas tersebut sepenuhnya tidak dapat diubah, dan disimpan dalam koleksi yang tidak dapat diubah, untuk akhirnya dimodifikasi oleh aktor Akka.
Sekarang, saya memiliki kelas kasus dengan banyak bidang, dan saya menerima pesan yang mengatakan saya harus memperbarui salah satu bidang, seperti ini:
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)
Perhatikan saya harus menentukan semua bidang, meskipun hanya satu perubahan. Apakah ada cara untuk mengkloningPersona yang ada dan mengganti hanya satu bidang, tanpa menentukan semua bidang yang tidak berubah? Bisakah saya menulis itu sebagai sifat dan menggunakannya untuk semua kelas kasus saya?
Jika Persona adalah contoh mirip Peta, itu akan mudah dilakukan.