जावा में, वे इस समस्या को एक clone
विधि है, कि सभी सुपर कक्षाओं में clone
लागू करके काम करता है हल करने के लिए कोशिश की, लेकिन यह आम तौर पर टूटे हुए माना जाता है और सबसे अच्छा कारणों के लिए, बचा आप देख सकते हैं (उदाहरण के लिए here)।
तो स्कैला में, जावा में जीनरल के रूप में, आपको अपनी मनपसंद कक्षा के लिए अपनी प्रतिलिपि विधि बनाना होगा, जो आपको फ़ील्ड की गहरी बनाम उथली प्रतिलिपि जैसी चीजों को निर्दिष्ट करने की अनुमति देगा।
यदि आप कक्षा case class
बनाते हैं, तो आपको copy
विधि मुफ्त में मिलती है।
case class A(n: Int)
val a = A(1) // a: A = A(1)
val b = a.copy(a.n) // b: A = A(1)
val c = a.copy(2) // c: A = A(2)
हालांकि मामले वर्गों से इनहेरिट अब मान्य नहीं है: यह है क्योंकि आप एक ही समय में कोई भी फ़ील्ड अद्यतन कर सकते हैं वास्तव में उस से बेहतर है,।
स्रोत
2011-11-10 20:45:10
ध्यान दें कि यदि आप अपनी वस्तुओं को अपरिवर्तनीय रखते हैं तो आपको प्रतियां बनाने की आवश्यकता नहीं है। –