के बाद संदर्भ है मेरे पास कक्षा का ऑब्जेक्ट है, और मैं इसे dup
के साथ डुप्लिकेट करना चाहता हूं। आवृत्ति चरों में से एक एक सरणी है, और ऐसा लगता है कि यह संदर्भित है। मैंने सोचा कि डुप्लिकेट ने वास्तव में एक डिप्लीकेट बनाया है। ,इंस्टेंस वैरिएबल अभी भी 'dup'
irb(main):094:0> class G
irb(main):095:1> attr_accessor :iv
irb(main):096:1> def initialize
irb(main):097:2> @iv = [1,2,3]
irb(main):098:2> end
irb(main):099:1> end
=> nil
irb(main):100:0> a=G.new
=> #<G:0x27331f8 @iv=[1, 2, 3]>
irb(main):101:0> b=a.dup
=> #<G:0x20e4730 @iv=[1, 2, 3]>
irb(main):103:0> b.iv<<4
=> [1, 2, 3, 4]
irb(main):104:0> a
=> #<G:0x27331f8 @iv=[1, 2, 3, 4]
मैं a
अपरिवर्तित होने की अपेक्षा करेंगे क्योंकि dup
एक नया चर बनाता है, को संदर्भित नहीं:
यहाँ मेरी आईआरबी सत्र है।
यह भी ध्यान रखें कि यदि आप को G::initialize
में स्केलर के साथ प्रतिस्थापित करना चाहते हैं, तो dup
इसका संदर्भ नहीं देगा।