रूबी में कक्षा और प्रकार के तरीकों के बीच क्या अंतर है? मैंने देखा है कि प्रकार कुछ वर्गों के प्रकार को खोजने के लिए काम करता है लेकिन दूसरों को नहीं।कक्षा() बनाम प्रकार() रूबी
उत्तर
मुख्य अंतर यह है कि Object#type
बहिष्कृत है। ऑब्जेक्ट के लिए आरडीओसी # प्रकार:
ऑब्जेक्ट # कक्षा के लिए समानार्थी शब्दकोष।
यहाँ आप Object#class
क्यों उपयोग करना चाहिए:
, obj के वर्ग, अब वस्तु # प्रकार से अधिक पसंद रिटर्न के रूप में रूबी में एक वस्तु के प्रकार केवल शिथिल उस वस्तु से बंधा है वर्ग यह विधि को हमेशा स्पष्ट रिसीवर के साथ बुलाया जाना चाहिए, क्योंकि कक्षा रूबी में आरक्षित शब्द भी है।
असल में, आप शायद अधिकांश मामलों में किसी ऑब्जेक्ट की कक्षा की जांच करने के बजाय Object#respond_to?
का उपयोग करना चाहते हैं।
#type
#class
के लिए समानार्थी है, लेकिन यह रूबी 1.8 में बहिष्कृत है, और स्पष्ट रूप से रूबी 1.9 से चला गया है। बस हर जगह #class
का उपयोग करें।
# For ruby 1.8 $ ri Object#type ------------------------------------------------------------ Object#type obj.type => class ------------------------------------------------------------------------ Deprecated synonym for Object#class. # For ruby 1.9 $ ri1.9 Object#type Nothing known about Object#type
यदि यह समानार्थी है, तो मुझे एक कक्षा में टाइप करने पर एक अपरिभाषित विधि त्रुटि क्यों मिलेगी जिसे मैंने स्वयं परिभाषित किया है? लेकिन वही बात तब नहीं होती जब मैं एक ही कक्षा के लिए कक्षा विधि को बुलाता हूं। अपरिभाषित विधि त्रुटि ऐसा नहीं लगता है कि आपको बहिष्कृत विधि के लिए क्या मिलेगा। –
क्या आप रूबी 1.9 पर हैं? रूबी 1.8 पर मुझे कोई त्रुटि नहीं मिलती है, केवल बहिष्करण के बारे में एक चेतावनी। – kch
और यदि आप रूबी 1.9 पर हैं, तो, बहिष्कार का मतलब है कि इसे कुछ हटा दिया जाएगा, और ऐसा लगता है कि 1.9 ऐसा है। – kch
- 1. जेनेरिक प्रकार बनाम सार कक्षा/इंटरफेस
- 2. कक्षा कक्षा - उदाहरण बनाम कक्षा के तरीके
- 3. रूबी "बेस" कक्षा
- 4. रूबी प्रकार
- 5. === बनाम == रूबी
- 6. रूबी में बनाम
- 7. रूबी वर्तमान कक्षा
- 8. रूबी बनाम रूबी रेल पर
- 9. डब्ल्यूसीएफ सेवा पुस्तकालय बनाम कक्षा पुस्तकालय परियोजना प्रकार
- 10. डीटीओ कक्षा बनाम संरचना
- 11. रूबी बनाम स्ट्रक्चर बनाम परीक्षण
- 12. विधि बनाम फंक्शन बनाम प्रक्रिया बनाम कक्षा?
- 13. रूबी: मॉड्यूल बनाम वर्ग
- 14. रूबी कक्षाएं: स्वयं बनाम @ variable
- 15. कक्षा प्रकार उद्देश्य सी
- 16. कक्षा org.springframework.web.jsf.el.SpringBeanFacesELResolver प्रकार javax.el.ELResolver
- 17. में कक्षा प्रकार C++
- 18. वर्ग बनाम कक्षा
- 19. कक्षा वस्तु बनाम HashMap
- 20. इंटरफेस बनाम कक्षा में
- 21. प्रकार बनाम रैंक प्रकार सिद्धांत
- 22. कक्षा तालिका विरासत बनाम denormalization
- 23. सूची सभी प्रकार रूबी
- 24. ऑब्जेक्ट.क्लास == रूबी में कक्षा क्यों?
- 25. कक्षा के बिना रूबी विधियों?
- 26. रूबी की अपवाद त्रुटि कक्षा
- 27. रूबी बनाम __send__
- 28. क्लोजर बनाम रूबी
- 29. स्वरूपप्रोवाइडर बनाम विस्तार विधि बनाम नई कक्षा
- 30. पायथन: शब्दावली 'कक्षा' वीएस 'प्रकार'
यदि यह समानार्थी है, तो मुझे एक अपरिभाषित विधि त्रुटि क्यों मिलेगी जब मैं उस वर्ग पर टाइप करता हूं जिसे मैंने स्वयं परिभाषित किया है? लेकिन वही बात तब नहीं होती जब मैं एक ही कक्षा के लिए कक्षा विधि को बुलाता हूं। अपरिभाषित विधि त्रुटि ऐसा नहीं लगता है कि आपको बहिष्कृत विधि के लिए क्या मिलेगा। –
@ क्रिस कोलिन्स मेरा अनुमान है कि डॉक्टर बंद है, और यह एक सख्त समानार्थी नहीं है। प्वाइंट बनी हुई है कि ऑब्जेक्ट # प्रकार एक गैर-उपयोग विधि है। – runako
answer_to का उपयोग क्यों करें? –