आप एक वर्ग के सभी पूर्वजों, या वंश को देखने के लिए पूछ रहे हैं? पूर्वजों के लिए, का उपयोग करें:
Class.ancestors
, कोई तुलनीय विधि वंशजों के लिए "बॉक्स से बाहर" वहाँ है, तथापि। तुम्हें पता है, ObjectSpace उपयोग कर सकते हैं नीचे के रूप में है, लेकिन यह धीमी है और रूबी कार्यान्वयन भर में पोर्टेबल नहीं हो सकता है:
ObjectSpace.each_object(Class) do |klass|
p klass if klass < StandardError
end
संपादित करें:
एक भी उपवर्गीकरण ट्रैक करने के लिए Class#inherited हुक का उपयोग कर सकते हैं। यह ट्रैकिंग कार्यक्षमता परिभाषित होने से पहले बनाए गए किसी भी उप-वर्ग को नहीं पकड़ेगा, हालांकि, यह आपके उपयोग के मामले में फिट नहीं हो सकता है। यदि आपको अपने आवेदन के अंदर परिभाषित कक्षाओं पर प्रोग्रामेटिक रूप से उस जानकारी का उपयोग करने की आवश्यकता है, हालांकि, यह जाने का तरीका हो सकता है।
स्रोत
2009-10-19 18:21:52
बहुत बहुत धन्यवाद! वही था जो मैं चाहता था! :) – flyer88