2011-04-25 13 views
21

जब मैं एक आदेश जो मौजूद नहीं है में आईआरबी और प्रकार में जाने मैं बताते हुए कोई त्रुटि मिलती हैirb से सभी स्थानीय चर या उपलब्ध विधियां प्राप्त करें?

"undefined local variable or method 'my_method' for main:Object (NameError)" 

वहाँ एक रास्ता सिर्फ स्थानीय चर या तरीके उपलब्ध हैं की एक सूची प्राप्त करने के लिए है? रूबी की खोज के लिए यह वास्तव में उपयोगी होगा। कर्नेल, वस्तु और मॉड्यूल में तरीकों के लिए

उत्तर

23

देखो: उदा local_variables, instance_methods, instance_variables

वहाँ में अन्य महान तरीके। inspect एक और है।

+0

आप उदाहरण चर दिखाने के लिए inspect' मतलब '? – sawa

+0

@sawa, का निरीक्षण भी instance_variables प्रदर्शित होगा (अर्थात जब तक कि यह किसी और के बजाय कुछ दिखाने के लिए एक वर्ग के लिए ओवरराइड कर दिया गया है) – Zabba

+0

कोई व्याख्या कर सकते हैं कि कैसे इस आदमी को शीघ्र हो जाता है: "शो सभी उपलब्ध 152) तरीकों" http://www.youtube.com/watch?v=J_9H1WPV2Ws#t=0m15s – lukemh

6

उदाहरण चर जानने के लिए, आप Kernel#instance_variables उपयोग कर सकते हैं के रूप में Zabba बताया।

एक वस्तु पर उपलब्ध तरीकों के लिए, मैं my_object.methods - Object.methods का उपयोग करके पता लगाएं कि अस्पष्ट तरीकों मेरी वस्तु के लिए उपलब्ध हैं। यह सूची को संक्षिप्त करता है और पढ़ने के लिए काफी आसान है।

+0

आप शायद 'my_object.methods.sort है कि बदलना चाहिए के रूप में यह खड़ा है, आप' 'my_object' के उदाहरण विधि की सूची से घटाकर रहे Object' की क्लास तरीकों। – RoUS

+0

सच है। हालांकि रूबी में, 'ऑब्जेक्ट.क्लास' 'क्लास 'है जो वर्ग' कक्षा 'का एक उदाहरण है, इसलिए इसमें अभी भी' ऑब्जेक्ट। विधि 'से विधियां हैं। – Swanand

14

शानदार उत्तर।
आप का पता लगाने के रूप में, आप अपने निपटान में इन है:

obj.private_methods 
obj.public_methods 
obj.protected_methods 
obj.singleton_methods 

और

MyClass.private_instance_methods 
MyClass.protected_instance_methods 
MyClass.public_instance_methods 

उपयोग जैसा:

obj.public_methods.sort 

आसान भी समीक्षा कर सकते हैं।

कुछ विशेष मामलों

String.instance_methods(false).sort 

की तरह मौजूद हैं ... आप केवल उदाहरण स्ट्रिंग कक्षा में परिभाषित तरीकों, कक्षाओं यह किसी भी पूर्वजों से विरासत में मिली छोड़ते हुए दे देंगे। जैसा कि मुझे उम्मीद है कि आप जानते हैं, आप यहां और अधिक देख सकते हैं: http://www.ruby-doc.org/docs/ProgrammingRuby/ लेकिन यह आईआरबी में निरीक्षण और प्रतिबिंबित करने के रूप में मजेदार नहीं है।

मुबारक की खोज -

पेरी

संबंधित मुद्दे