जब आप किसी भी स्पष्ट वर्ग या मॉड्यूल परिभाषा के def test ...
बाहर निष्पादित, आप वस्तु वर्ग के संदर्भ में अनिवार्य रूप से कर रहे हैं, तो test
अब Object
irb
में का एक उदाहरण विधि है ...
1.8.7 :001 > def test
1.8.7 :002?> "Hello world"
1.8.7 :003?> end
=> nil
1.8.7 :004 > Object.instance_methods.sort
=> ["==", "===", "=~", "__id__", "__send__", "class", "clone", "display", "dup", "enum_for", "eql?", "equal?", "extend", "freeze", "frozen?", "hash", "id", "inspect", "instance_eval", "instance_exec", "instance_of?", "instance_variable_defined?", "instance_variable_get", "instance_variable_set", "instance_variables", "is_a?", "kind_of?", "method", "methods", "nil?", "object_id", "private_methods", "protected_methods", "public_methods", "respond_to?", "send", "singleton_methods", "taint", "tainted?", "tap", "test", "to_a", "to_enum", "to_s", "type", "untaint"]
method
Object
वर्ग का एक उदाहरण विधि है जो अनिवार्य रूप से सब कुछ विरासत में प्राप्त होता है। जब आप किसी भी स्पष्ट वर्ग या मॉड्यूल परिभाषा के बाहर method
पर कॉल करते हैं, तो आप अनिवार्य रूप से इसे Object
वर्ग की विधि के रूप में आमंत्रित कर रहे हैं, और वह वर्ग स्वयं Class
का उदाहरण है, जो Object
का उप-वर्ग है (क्षमा करें - मुझे पता है कि यह एक है थोड़ा उलझन में पालन करने के लिए)।
तो - method
विधि एक स्ट्रिंग या प्रतीक लेती है और उसी ऑब्जेक्ट पर उस नाम की बाध्य विधि को encapsulating ऑब्जेक्ट देता है जो .method
पर कॉल किया गया था। इस मामले में, test
विधि Object
ऑब्जेक्ट से जुड़ी है।
method(:test).call
का अर्थ है test
Object
की विधि जिसे आप def test ...
के माध्यम से पहले परिभाषित करते हैं।
जो कुछ भी करता है वह आंतरिक रूप से सी में रूबी के लिए किया जाता है। इससे कोई फर्क नहीं पड़ता। – sawa