5
पर प्रतिबिंबित करें मैं एक नेस्टेड नेमस्पेस की रूट क्लास/मॉड्यूल को खोजने का प्रयास कर रहा हूं।नेस्टेड नेमस्पेस
क्या यह खोजने के लिए यह सबसे प्रभावी तरीका है? मुझे यह पसंद नहीं है कि मैं एक स्ट्रिंग में बदल रहा हूं। ऐसा लगता है कि एक और अधिक सुरुचिपूर्ण समाधान होना चाहिए।
class Foo
class Bar
def parent
Object.const_get self.class.to_s.split(/::/).first
end
end
end
Foo::Bar.new.parent #=> Foo
कमाल है, आपको बहुत बहुत धन्यवाद। –
@sawa निम्नलिखित काम क्यों नहीं करता है? 'Foo :: Bar :: Baz.class_eval {Module.nesting} # => [] 'और न ही' Foo :: Bar :: Baz.module_eval {Module.nesting} # => [] 'और न ही' Foo :: Bar। instance_eval {Module.nesting} # => [] ' – rudolph9
@ rudolph9 'घोंसले' विधि '__dir__',' बाध्यकारी 'जैसी कुछ विधियों में से एक है, जहां शाब्दिक वातावरण महत्वपूर्ण है। आप इसे अन्य निर्माणों के साथ प्रतिस्थापित नहीं कर सकते हैं भले ही वे आमतौर पर समकक्ष हों। – sawa