जब मैंमाणिक self.class.class_eval या singleton_class.class_eval
class T
def initialize
self.class.class_eval do
def test
return self.class.object_id
end
end
end
end
और
class T
def initialize
singleton_class.class_eval do
def test
return self.class.object_id
end
end
end
end
धन्यवाद
पी एस क्या अंतर है। टैस ने उत्तर दिया कि इस उदाहरण में, सिंगलटन_क्लास प्रत्येक नई ऑब्जेक्ट के लिए एक अलग ऑब्जेक्ट_आईडी वापस कर देगा, क्योंकि सिंगलटन_क्लास केवल एक ऑब्जेक्ट से संबंधित है। लेकिन आईआरबी शो अगले
1.9.2p180 :001 > class T
1.9.2p180 :002?>
1.9.2p180 :003 > def initialize
1.9.2p180 :004?> singleton_class.class_eval do
1.9.2p180 :005 > def test
1.9.2p180 :006?> return self.class.object_id
1.9.2p180 :007?> end
1.9.2p180 :008?> end
1.9.2p180 :009?> end
1.9.2p180 :010?>
1.9.2p180 :011 > end
=> nil
1.9.2p180 :012 > t = T.new
=> #<T:0x00000100ae9cb8>
1.9.2p180 :013 > t1 = T.new
=> #<T:0x00000100ad7ef0>
1.9.2p180 :014 > t1.test == t.test
=> true
1.9.2p180 :015 > t1.test
=> 2153233300
1.9.2p180 :016 > t.test
=> 2153233300
1.9.2p180 :017 >
मुझे कोई कार्यात्मक अंतर नहीं मिल रहा है, लेकिन मुझे लगता है कि एक होना चाहिए। –
@JakubHampl, ऐसा लगता है कि मुझे अंतर मिला) –
@AlexKliuchnikau मुझे पता था कि कोई होगा। आपको +1 –