मैं पढ़ रहा था कि रूबी दुभाषिया कैसे कार्यान्वित किया जाता है, और एक सवाल हुआ कि अभी तक मेरे लिए कोई जवाब नहीं मिला। शीर्षक में यह एक है: चूंकि Class
(r_cClass
) super
है (मेटाग्लास को अनदेखा कर रहा है, वास्तव में super
r_cClass
का मेटाक्लास है), अगर मैं Class
ऑब्जेक्ट को एक विधि भेजता हूं, तो यह विधि तालिका में देखा जाएगा Class
'कक्षा। लेकिन Class
'वर्ग Class
है, तो क्या मुझे Class
के उदाहरण विधियों को देखना नहीं चाहिए? लेकिन दस्तावेज Class
कक्षा विधियों और Class
उदाहरण विधियों को अलग करने के बाद से ऐसा नहीं है। रूबी के eval.c
में search_method
में, मुझे Class
कक्षा के लिए कोई विशेष जांच नहीं मिली। क्या कोई इस पर रोशनी डाल सकता है?क्लास कक्षा का वर्ग कैसे हो सकता है और क्लास इंस्टेंस विधियों के पास नहीं हो सकता है?
उत्तर
आपके विश्वासों के तरीके के बारे में आपकी मान्यताओं को सही लगता है, लेकिन मुझे यकीन नहीं है कि आपको ऐसा क्यों लगता है कि यह इस तरह से काम नहीं करता है।
रूबी 1.8.7 में:
irb> a = Class.new.methods - Object.new.methods
=> [... 36 element array ...]
irb> b = Class.methods - Object.new.methods
=> [... 37 element array ...]
irb> b - a
=> ["nesting"]
एक सामान्य वर्ग उदाहरण (Class.new) 36 उदाहरण के तरीकों है। यदि मैं कक्षा को स्वयं देखता हूं, जो एक सामान्य वर्ग उदाहरण भी है, तो इसमें 36 उदाहरण विधियां हैं, साथ ही 1 अतिरिक्त कक्षा विधि (घोंसले), जो केवल इसलिए मौजूद है क्योंकि इसे अपने सुपरक्लास मॉड्यूल से विरासत में मिला है।
ध्यान दें कि कक्षा में एक इंस्टेंस विधि जोड़ना स्वचालित रूप से इसे क्लास विधि के रूप में भी जोड़ता है, लेकिन क्लास के मेटाक्लास में कक्षा जोड़ना नहीं होगा।
irb> class Class ; def everywhere ; true ; end ; end
irb> class << Class ; def only_singleton ; true ; end ; end
irb> Class.everywhere
=> true
irb> Class.new.everywhere
=> true
irb> Class.only_singleton
=> true
irb> Class.new.only_singleton
NoMethodError: undefined method 'only_in_singleton' for #<Class:0x4800ac8>
तो विधियां वास्तव में वही हैं। वास्तव में स्रोत कोड में कोई सुराग नहीं है जिसने मुझे इस विचार के लिए प्रेरित किया। यह सिर्फ इतना है कि रूबी दस्तावेज़ क्लास सिंगलटन विधियों से क्लास इंस्टेंस विधि को स्पष्ट रूप से अलग करते हैं। क्या वह अलगाव केवल स्पष्टता के लिए बनाया गया है? – eugeniodepalo
सिंगलटन विधियों से आप कक्षा के तरीकों का मतलब है? – rdvdijk
हां, मेरा मतलब वर्ग विधियां है। – eugeniodepalo
- 1. जावा क्लास इंस्टेंस से कक्षा विधियों तक नहीं पहुंच सकता
- 2. जावा में पैरेंट और चाइल्ड क्लास में एक ही इंस्टेंस वैरिएबल हो सकता है?
- 3. पायथन क्लास इंस्टेंस वैरिएबल और क्लास वेरिएबल्स
- 4. बेस क्लास विनिर्देश का अर्थ फिर से सी # में क्यों निर्भर नहीं हो सकता है?
- 5. मैं रूबी में क्लास विधि और इंस्टेंस विधि का उपयोग कैसे कर सकता हूं?
- 6. जेपीए में इकाई वर्ग क्यों अंतिम नहीं हो सकता है?
- 7. सी ++ बेस क्लास इंस्टेंस
- 8. क्यों डायलॉगफ्रैगमेंट आंतरिक कक्षा नहीं हो सकता है?
- 9. क्या एक नेस्टेड सी ++ वर्ग अपनी संलग्न कक्षा का उत्तराधिकारी हो सकता है?
- 10. इस सामान्य वर्ग घोषणा का क्या अर्थ हो सकता है?
- 11. क्या टीटीमर ऑब्जेक्ट डेल्फी कक्षा का क्षेत्र हो सकता है?
- 12. क्या ओबीजेसी कक्षा वस्तु प्रोटोकॉल के अनुरूप हो सकती है?
- 13. क्या संपत्ति का प्राप्ति सार हो सकती है और सेट आभासी हो सकता है?
- 14. क्लास विधियों के भीतर गेटर्स का उपयोग
- 15. MEF = निराशा का अनुभव हो सकता है?
- 16. "टाइप क्लास" नामक "टाइप क्लास" क्यों है?
- 17. पाइथन में कॉलिंग फ़ंक्शन का क्लास कैसे ढूंढ सकता है?
- 18. किसी वर्ग के अपने प्रकार का सदस्य कैसे हो सकता है, यह अनंत पुनरावृत्ति नहीं है?
- 19. क्या एक यूटिलिटी क्लास एमवीसी फ्रेमवर्क में मॉडल क्लास हो सकती है?
- 20. 'यह' जावास्क्रिप्ट क्लास विधियों में अपरिभाषित है
- 21. क्यों __getitem__ क्लासमेड नहीं हो सकता है?
- 22. एक्सेस पैरेंट क्लास इंस्टेंस वैरिएबल
- 23. क्या क्लास प्रॉपर्टी/फील्ड अज्ञात प्रकार का हो सकता है सी # 4.0 में?
- 24. मेरे पास स्क्रीन निष्क्रिय श्रोता कैसे हो सकता है?
- 25. मेरे पास एक पोर्टेबल Emacs कैसे हो सकता है?
- 26. इस पीओडी संरचना को बेस क्लास के रूप में उपयोग करना खतरनाक क्यों हो सकता है?
- 27. "प्रारंभ हो सकता है नहीं किया गया है"
- 28. क्यों क्लास क्लास में रिसोर्सएस्ट्रीम विधि है?
- 29. java.lang.NoClassDefFoundError का कारण क्या हो सकता है?
- 30. मॉड्यूल एंड्रॉइड लाइब्रेरी नहीं हो सकता है?
इस प्रश्न के रूप में एक प्रश्न में, संभवतः एक उदाहरण विधि, उदाहरण के एक उदाहरण विधि और एक वर्ग विधि का उदाहरण देने का एक अच्छा विचार है। –