मैं एक हैश की तरह है।रूबी dup/क्लोन रिकर्सिवली
जब मैं कोशिश,
d = h.dup # or d = h.clone
d['name'] = 'sayuj1'
d['project']['duration'] = 'xyz'
p d #=> {"name"=>"sayuj1", "project"=>{"duration"=>"xyz", "project_name"=>"abc"}, "age"=>22}
p h #=> {"name"=>"sayuj", "project"=>{"duration"=>"xyz", "project_name"=>"abc"}, "age"=>22}
यहाँ आप देख सकते हैं project['duration']
मूल हैश में बदल क्योंकि project
एक और हैश वस्तु है।
मैं चाहता हूं कि हैश duped
या cloned
रिकर्सिव हो। इसे कैसे प्राप्त किया जा सकता है?
यह 'h' द्वारा संदर्भित सभी वस्तुओं की पूर्ण प्रतियां बनाता है। सरल स्ट्रिंग हैंश के लिए सियुज द्वारा यह आवश्यक हो सकता है। अधिक जटिल वस्तुओं के साथ, यह अब और वांछित नहीं हो सकता है। एक बार 'हैश # डुप्ली' विधि को सभी मानों को दोहराने के लिए 'मानों' में दोबारा डुप्लिकेट कर सकता है। लेकिन उसे हर ऑब्जेक्ट प्रकार के लिए विस्तारित करने की आवश्यकता होगी। –
@ होल्डर जस्ट: हां, यही कारण है कि इसे "गहरी प्रति" कहा जाता है :-) –
बेशक। मैं सिर्फ यह उल्लेख करना चाहता था कि यह ओपी से अधिक कर सकता है (हालांकि यह शायद ठीक है) :) तो यह सिर्फ भविष्य के संदर्भ के लिए है। –