मैं रूबी में कुछ metaprogramming कर रहा हूँ, और मैं गतिशील रूप से एक मॉड्यूल के अंदर एक भाई वर्ग उत्पन्न करने के लिए की जरूरत है। ऐसा करने में, मैं मॉड्यूल पर const_set को कॉल करना चाहता हूं, लेकिन मुझे नहीं पता कि कौन सा मॉड्यूल निरंतर रनटाइम तक कॉल करता है। एक उदाहरण: जब बुलारूबी: कक्षा के संलग्न मॉड्यूल कॉन्स को पाने का कोई तरीका है?
def generate_from klass
mod = klass.enclosing_module # <- THIS LINE is the one I need to figure out
mod.const_set("GeneratedClassName", Class.new)
end
और क्या मैं, के साथ खत्म करना चाहते हैं:
को देखते हुए वर्गों
Foo::Bar::Baz
Foo::Quox::Quack
मैं इस तरह एक समारोह (यहाँ oversimplified) कॉल करने के लिए सक्षम होना चाहते हैं Baz
साथ, एक नया वर्ग के रूप में
Foo::Bar::GeneratedClassName
और एक नीम हकीम के साथ परिभाषित किया गया है, मैं चाहता हूँ
Foo::Quox::GeneratedClassName
एक ही रास्ता मैं जानता हूँ कि की klass.name को विभाजित करने के लिए, तो बार-बार उन तारों पर const_get फोन, constantized है। क्या किसी को और अधिक सुरुचिपूर्ण तरीके से पता है?
केवल दो तरीके मैं कर जिस तरह से आप तल पर वर्णन किया जाएगा के बारे में पता था और इसमें प्रत्येक वर्ग में 'get_module' फ़ंक्शन। लेकिन, ऐसा लगता है कि * ऐसा करने का एक तरीका होना चाहिए। इस पर नजर रखने ... – drharris