मान लीजिए कि मेरे पास एक केस क्लास है जो अलग-अलग सोशल नेटवर्क पर लोगों, लोगों का प्रतिनिधित्व करता है। उस वर्ग के उदाहरण पूरी तरह से अपरिवर्तनीय हैं, और अपरिवर्तनीय संग्रह में आयोजित किए जाते हैं, अंततः एक अक्का अभिनेता द्वारा संशोधित किया जाता है।
अब, मेरे पास कई क्षेत्रों के साथ एक केस क्लास है, और मुझे एक संदेश प्राप्त होता है, जिसमें कहा गया है कि मुझे किसी एक फ़ील्ड को अपडेट करना होगा, कुछ इस तरह से:
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)
ध्यान दें कि मुझे सभी क्षेत्रों को निर्दिष्ट करना है, भले ही केवल एक ही परिवर्तन हो। क्या मौजूदा फ़ील्ड को क्लोन करने और केवल एक फ़ील्ड को बदलने का एक तरीका है, जो सभी फ़ील्ड को निर्दिष्ट किए बिना, जो नहीं बदलता है? क्या मैं इसे एक लक्षण के रूप में लिख सकता हूं और इसे मेरे सभी केस वर्गों के लिए उपयोग कर सकता हूं?
यदि व्यक्ति मानचित्र जैसा उदाहरण होता, तो ऐसा करना आसान होता।