अजगर में हम "dir" एक मॉड्यूल कर सकते हैं, इस तरह:रूबी पाइथन के "डीआईआर" के बराबर है?
>>> import re
>>> dir(re)
और यह मॉड्यूल में सभी कार्यों को सूचीबद्ध करता है। रूबी में ऐसा करने का एक समान तरीका है?
अजगर में हम "dir" एक मॉड्यूल कर सकते हैं, इस तरह:रूबी पाइथन के "डीआईआर" के बराबर है?
>>> import re
>>> dir(re)
और यह मॉड्यूल में सभी कार्यों को सूचीबद्ध करता है। रूबी में ऐसा करने का एक समान तरीका है?
जहाँ तक मुझे वास्तव में नहीं पता, लेकिन आप
object.methods.sort
साथ कहीं जाना आप इस तरह के Enumerable
के रूप में, एक मॉड्यूल ले जा सकते हैं, और methods
विधि है जो सभी तरीकों मॉड्यूल को परिभाषित करता है सूचीबद्ध करता है भेजने के रूप में। इस मॉड्यूल को शामिल करने वाले वर्ग इन तरीकों का जवाब देंगे।
>> Enumerable.methods
=> ["inspect", "private_class_method", "const_missing", "clone", "method", "public_methods", "public_instance_methods", "instance_variable_defined?", "method_defined?", "equal?", "freeze", "included_modules", "const_get", "yaml_as", "methods", "respond_to?", "module_eval", "class_variables", "dup", "protected_instance_methods", "instance_variables", "public_method_defined?", "__id__", "object_id", "taguri", "yaml_tag_read_class", "eql?", "const_set", "id", "to_yaml", "taguri=", "singleton_methods", "send", "class_eval", "taint", "frozen?", "instance_variable_get", "include?", "private_instance_methods", "__send__", "instance_of?", "private_method_defined?", "to_a", "name", "to_yaml_style", "autoload", "type", "yaml_tag_class_name", "<", "protected_methods", "instance_eval", "<=>", "==", ">", "display", "===", "instance_method", "instance_variable_set", "to_yaml_properties", "kind_of?", "extend", "protected_method_defined?", "const_defined?", ">=", "ancestors", "to_s", "<=", "public_class_method", "hash", "class", "instance_methods", "tainted?", "=~", "private_methods", "class_variable_defined?", "nil?", "untaint", "constants", "autoload?", "is_a?"]
मैं कुछ इस तरह के लिए जाना चाहते हैं:
y String.methods.sort
जो तुम तरीकों में से क्रमबद्ध सरणी के एक YAML प्रतिनिधित्व दे देंगे। ध्यान दें कि इसका उपयोग कक्षाओं और वस्तुओं दोनों के तरीकों की सूची के लिए किया जा सकता है। तुलना के लिए एक मूल्य पर तरीकों को आज़माने के लिए
"something".methods.select {|item| item =~ /query/ }
युक्ति:: एक विधि के लिए "खोज" आईआरबी में के लिए
टिप
value = "something"
[:upcase, :downcase, :capitalize].collect {|method| [method, value.send(method)] }
इसके अलावा, ध्यान दें कि आप सब नहीं मिलेगा object.methods के साथ पाइथन के डीआईआर के समान जानकारी। क्लास विधियों को प्राप्त करने के लिए आपको object.methods और class.constants, class.singleton_methods के संयोजन का उपयोग करना होगा।
वास्तव में नहीं। अन्य लोगों की तरह, आप क्लास इंस्टेंस विधियों को सूचीबद्ध करके जो चाहते हैं उसका हिस्सा प्राप्त कर सकते हैं (उदा। String.instance_methods
) लेकिन यदि आपकी फ़ाइल खोलने वाली फ़ाइल को फिर से खोलने पर आपकी सहायता नहीं होती है (जब तक आप पहले और बाद में चेक नहीं करते)।
यदि आपको विधियों की सूची में प्रोग्रामेटिक पहुंच की आवश्यकता नहीं है, तो ri
कमांड लाइन टूल का उपयोग कर कक्षा, मॉड्यूल या विधि के लिए दस्तावेज़ों को देखने पर विचार करें।
मैं इसे स्वयं के जवाब पर टिप्पणी करता, लेकिन स्पष्ट रूप से मेरे पास पर्याप्त प्रतिनिधि नहीं है।
some_object.methods.sort - Object.new.methods
यह नहीं है के रूप में अन्य लोगों ने कहा कि आप वास्तव में क्या पूछ रहे थे, लेकिन यह आप की जानकारी के बाद आप कर रहे हैं देता है।
यदि मैं आपके प्रश्न को कठोर रूप से पढ़ता हूं, तो मुझे इसका जवाब देना होगा: रुबी में require
द्वारा निर्दिष्ट फ़ाइल केवल एक कंटेनर है और इसकी आवश्यकता वर्ग के साथ कोई संबंध नहीं है। सामग्री हो सकती है:
या इसके बाद, कई बार के किसी भी संयोजन। तो आप किसी दिए गए फ़ाइल में सीधे सभी विधियों के लिए नहीं पूछ सकते हैं।
यदि आप किसी दिए गए मॉड्यूल या कक्षा के सभी तरीकों को सूचीबद्ध करना चाहते हैं, तो अन्य उत्तरों जो आप चाहते हैं (मुख्य रूप से मॉड्यूल नाम या कक्षा पर #methods
विधि का उपयोग करके)।
मैं अपने .irbrc में इस लेना पसंद:
class Object
def local_methods
(methods - Object.instance_methods).sort
end
end
तो जब मैं आईआरबी में हूँ:
>> Time.now.local_methods
=> ["+", "-", "<", "<=", "<=>", ">", ">=", "_dump", "asctime", "between?", "ctime", "day", "dst?", "getgm", "getlocal", "getutc", "gmt?", "gmt_offset", "gmtime", "gmtoff", "hour", "isdst", "localtime", "mday", "min", "mon", "month", "sec", "strftime", "succ", "to_f", "to_i", "tv_sec", "tv_usec", "usec", "utc", "utc?", "utc_offset", "wday", "yday", "year", "zone"]
या यहां तक कि अधिक आकर्षक - ग्रेप साथ:
>> Time.now.local_methods.grep /str/
=> ["strftime"]
हो सकता है कि मूल प्रश्न का उत्तर न दें (उपयोग के मामले पर निर्भर करता है), लेकिन उन लोगों के लिए जोमें इसका उपयोग करने के लिए देख रहे हैं केवल 10, आप स्वत: पूर्णता के लिए "डबल-टैब" का उपयोग कर सकते हैं। जो, प्रभावी रूप से, किसी दिए गए ऑब्जेक्ट के लिए उपलब्ध विधियों (लगभग सभी) को भी सूचीबद्ध कर सकता है।
अपने ~/.irbrc
फ़ाइल में निम्न पंक्ति रखो:
require 'irb/completion'
अब, (री) irb
शुरू करते हैं, एक विधि टाइप करना आरंभ करें और दो बार टैब मारा - इनपुट आईआरबी पूर्ण हो जाता है!
मैं वास्तव में इसे यहाँ सीखा: http://drnicwilliams.com/2006/10/12/my-irbrc-for-consoleirb/
dir() ** भी चर ** कि कि दायरे में स्थापित किए गए हैं शामिल हैं - न सिर्फ कार्यों को परिभाषित किया। – daf
यह भी देखें: http://stackoverflow.com/questions/2009730/ruby-equivalent-to-pythons-help –