किसी अन्य प्रश्न का उत्तर देते समय, मुझे एहसास हुआ कि निम्न कार्यक्रम ऐसा नहीं करता जो मैंने सोचा था।रूबी वैश्विक दायरा
puts "test"
self.puts "test" # => private method `puts' called for main:Object (NoMethodError)
अपवाद मुझे तो हैरानी, जैसा कि मैं हमेशा सोचा था कि शीर्ष स्तर के विधि कॉल main
वस्तु दृष्टान्त द्वारा हल किया जा सकता है, लेकिन इस मामले होने के लिए प्रतीत नहीं होता।
पहली कॉल का वास्तविक रिसीवर कौन है और इसे कैसे हल किया जाता है? क्या यह एक विशेष नियम है जो केवल शीर्ष-स्तरीय दायरे पर विधि कॉल पर लागू होता है?
हाँ करने के लिए के अंदर PutsTest विधि कॉल करने से गुंजाइश बदल रहे हैं, लेकिन क्यों मैं एक कॉल कर सकते हैं निजी विधि अगर मैं 'स्वयं' निर्दिष्ट नहीं करता हूं? –
क्योंकि ऑब्जेक्ट के अंदर स्वयं को डाला जाता है, सीधे स्वयं को कॉल करने का मतलब है। इसका मतलब है कि आप स्वयं को स्टेप्ड पेंट विधि को कॉल करने का प्रयास कर रहे हैं। मैं कुछ जवाब के साथ अपना जवाब अद्यतन करें। । – mguymon
उम्मीद है कि कोड उदाहरण बनाम self.puts – mguymon