मेरे पास एक ऑब्जेक्ट है जिसे मैं एक विधि कॉल में गुजर रहा हूं। मान लें कि मैं ऐसी भाषा का उपयोग कर रहा हूं जो आपको केवल जावा या PHP जैसे संदर्भों से ऑब्जेक्ट पास करने की अनुमति देता है। यदि विधि ऑब्जेक्ट में परिवर्तन करता है, तो यह कॉलर को प्रभावित करेगा। मैं नहीं चाहता कि यह हो। तो ऐसा लगता है कि मुझे वस्तु की प्रतिलिपि बनाना है।ऑब्जेक्ट की विधि की प्रतिलिपि प्रतिलिपि - प्रतिलिपि कौन करता है?
मेरा प्रश्न है: ऑब्जेक्ट क्लोन करना किसकी ज़िम्मेदारी है? कॉलर, इससे पहले कि यह विधि बुलाता है? या कैली, इससे पहले वस्तु बदल जाती है?
संपादित करें: बस स्पष्ट करने के लिए, मैं चाहता हूं कि यह इस विधि के अनुबंध का हिस्सा बन जाए - कि यह मूल वस्तु को कभी भी संशोधित नहीं करता है। तो ऐसा लगता है कि यह प्रतिलिपि बनाने के तरीके पर होना चाहिए। लेकिन फिर कॉलर के पास ऐसी विधि से कोई सुरक्षा नहीं है जो ठीक से ऐसा नहीं करती है। मुझे लगता है कि यह स्वीकार्य है - यह एकमात्र अन्य विकल्प है जो इसे भाषा में बनाया गया है।
मुझे यह समझ में नहीं आता। आपके पास एक ऐसी विधि है जो किसी ऑब्जेक्ट में परिवर्तन करती है, लेकिन विधि का निहित अनुबंध यह है कि यह नहीं करता है। क्या आप इसे और स्पष्ट कर सकते हैं? –
विधि कॉलर के ऑब्जेक्ट को प्रभावित नहीं करना चाहिए, लेकिन यह ऑब्जेक्ट की अपनी प्रति बदल सकती है। –