สมมติว่าฉันมีคลาสเคสที่แสดงถึงตัวบุคคลผู้ใช้บนเครือข่ายโซเชียลต่างๆ อินสแตนซ์ของคลาสนั้นไม่เปลี่ยนแปลงอย่างสมบูรณ์และถูกจัดเก็บไว้ในคอลเลกชันที่ไม่เปลี่ยนรูปแบบซึ่งจะได้รับการแก้ไขในที่สุดโดยนักแสดง Akka
ตอนนี้ฉันมีคลาสเคสที่มีหลายฟิลด์และฉันได้รับข้อความแจ้งว่าต้องอัปเดตหนึ่งในฟิลด์ดังนี้:
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 เป็นอินสแตนซ์ที่เหมือนกับแผนที่มันจะง่ายมาก