मैं इस धारणा के तहत था कि इस मॉडल के तहत, विधि के लिए खोज केवल एकलटन वर्ग मूल रिसीवर के एकलटन वर्ग है, < कोड> obj । हालांकि, यह मॉडल इस तथ्य को नहीं समझा सकता है कि उप-वर्ग अपने सुपरक्लास की सिंगलटन विधियों तक पहुंच सकता है। उदाहरण के लिए मैं उलझन में हूँ क्योंकि मेरा मानना है कि इसका अर्थ है कि तो मेरा प्रश्न: रूबी विधि लुकअप की मेरी समझ से जो गुम है, इस तथ्य के बारे में बताता है कि एक वर्ग अपने सुपर वर्ग की सिंगलटन तरीकों तक पहुंच सकता है? < P> उप-क्लासिंग करते समय, न केवल तो तुम वास्तव में उलझन में नहीं हो। वास्तविक लुकअप है: obj.method रूबी को
विधि < / Code> इस प्रकार:
obj के एकलटन वर्ग में देखें।
obj 'सिंगलटन क्लास'।
obj वर्ग में देखें।
obj
method_missing ,
obj ।
वर्ग Foo def self.foo "foo" अंत अंत वर्ग बार & lt; Foo end Bar.foo # = & gt; "Foo"
Foo का सिंगलटन क्लास किसी बिंदु पर खोजा जाता है
foo । हालांकि, ऊपर दिए गए मॉडल के तहत, मुझे उम्मीद थी कि केवल
बार के एकलटन वर्ग को
foo के लिए खोजा जाएगा। ऐसा न मानने पर, मैं रूबी को
बार वर्ग,
कक्षा में देखने की उम्मीद करता हूं, और तब सुपरक्लैश श्रृंखला (
फू को छोड़कर) उसके एकलटन वर्ग पूरी तरह से)।
बार। सुपर क्लास को
Foo पर सेट है, लेकिन वही सिंगलटन कक्षाओं के लिए सही है:
बार.singleton_class.superclass == Foo.singleton_class # = & gt; सच
obj के सिंगलटन क्लास के साथ आरंभ करें।
< Li> प्रीड्यूल किए गए मॉड्यूल (रुबी 2.0)
method_missing की तलाश में है
Comments
Post a Comment