असल में, स्वत: पूर्णता .
के लिए काम करती है। ऑब्जेक्ट पर #methods
पर कॉल करके पूरा करने के विकल्प मिलते हैं। आप खुद के लिए यह देख सकते हैं Object.methods
अधिभावी द्वारा:
>> def Object.methods; ["foo", "bar"]; end
=> nil
>> Object.[TAB]
Object.foo Object.bar
>> Object.
ध्यान दें कि यह केवल काम करता है जब .
के बाईं ओर अभिव्यक्ति एक शाब्दिक है। अन्यथा, ऑब्जेक्ट को #methods
पर कॉल करने के लिए बाएं हाथ की तरफ मूल्यांकन करना शामिल होगा, जिसमें दुष्प्रभाव हो सकते हैं। साथ ही आप खुद के लिए यह देख सकते हैं:
[continuing from above...]
>> def Object.baz; Object; end
=> nil
>> Object.baz.[TAB]
Display all 1022 possibilities? (y or n)
हम Object
जो Object
ही रिटर्न के लिए एक विधि #baz
जोड़ें। फिर हम Object.baz
पर कॉल करने के तरीकों को प्राप्त करने के लिए स्वतः पूर्ण हो जाते हैं। अगर आईआरबी को Object.baz.methods
कहा जाता है, तो यह Object.methods
जैसा ही होगा। इसके बजाय, आईआरबी के पास 1022 सुझाव हैं। मुझे यकीन नहीं है कि वे कहां से आते हैं, लेकिन यह स्पष्ट रूप से एक सामान्य सूची है जो वास्तव में संदर्भ पर आधारित नहीं है।
::
ऑपरेटर (मॉड्यूल) मॉड्यूल के स्थिरांक प्राप्त करने के लिए भी उपयोग किया जाता है, जबकि .
नहीं है। यही कारण है कि HTTP
Net::
के पूरा होने में दिखाई देगा, लेकिन Net.
के लिए नहीं। Net.HTTP
सही नहीं है, लेकिन Net::HTTP
है।