एक वर्ग का नाम प्राप्त करने के लिए विधि (मॉड्यूल, वास्तव में) बस Module#name
है। अपने खुद के लिखने के लिए कोई ज़रूरत नहीं है:
Parent.name # => 'Parent'
Child.name # => 'Child'
हालांकि, रूबी में, वहाँ वास्तव में एक "वर्ग के नाम" के रूप में ऐसी कोई बात नहीं के रूप में वहाँ कुछ अन्य भाषाओं में है। रूबी में, एक वर्ग बस किसी ऑब्जेक्ट की तरह एक ऑब्जेक्ट होता है जो किसी अन्य चर के समान चर को सौंप दिया जाता है।
सभी Module#name
विधि सिस्टम में सभी स्थिरांक के माध्यम से लूप है और जांच करें कि मॉड्यूल को इनमें से किसी एक को सौंपा गया है, और उस निरंतर नाम या nil
को वापस लौटाएं यदि उसे कोई नहीं मिल रहा है।
तो, किसी भी अन्य वस्तु की तरह, कक्षा का "नाम" वास्तव में कुछ भी नहीं है लेकिन आप इसका उपयोग करने के लिए जो भी चर उपयोग करते हैं।
उदाहरण:
foo = Class.new
foo.name # => nil
अब, वर्ग के "नाम" foo
है। हालांकि, Module#name
nil
देता है, क्योंकि foo
स्थिर नहीं है।
bar = foo
bar.name # => nil
अब, वर्ग के "नाम" दोनोंfoo
और bar
, लेकिन Module#name
स्पष्ट रूप से अभी भी nil
देता है।
BAZ = foo
foo.name # => 'BAZ'
अब, के बाद से वर्ग एक निरंतर करने के लिए आवंटित किया गया है, कि निरंतर का नाम उस वर्ग का नाम है & hellip पर विचार किया जाएगा;
BAZ = nil
foo.name # => 'BAZ'
और नरकिप; निरंतर कुछ अलग और नरक को सौंपा गया है के बाद भी;
QUX = foo
QUX.name # => 'BAZ'
और नरकिप; कक्षा के बाद भी एक अलग निरंतर को सौंपा गया है।
Module#to_s
Module#name
का उपयोग करता है अगर यह nil
नहीं है, इसलिए, एक वर्ग के नाम पर मुद्रित करने के लिए, तो आप बस
puts Parent
करना वास्तव में पूरी तरह से अन्य उत्तर में सभी जटिल फुलाना के लिए आवश्यकता नहीं है।
यह रास्ता बहुत आसान लग रहा था। धन्यवाद। –
['मॉड्यूल # नाम'] (http://Ruby-Doc.Org/ruby-1.9/classes/Module.html#M000913) और डबल' डाल 'क्यों गलत है? –
कोई तरीका नहीं है जो स्वयं को लौटाता है, ऑब्जेक्ट का सीधे उपयोग करें: 'माता-पिता रखता है'। पुट कक्षा के स्ट्रिंग नाम प्राप्त करने के लिए दृश्यों के पीछे Parent.to_s को कॉल कर रहा है। –