2010-11-20 22 views

उत्तर

23

एक class परिभाषा शरीर के अंदर के साथ वर्ग मिल , self कक्षा को ही संदर्भित करता है। Module#name आपको कक्षा/मॉड्यूल का नाम बताएगा, लेकिन केवल तभी होगा जब वास्तव में एक हो। (रूबी में, "कक्षा का नाम" जैसी कोई चीज़ नहीं है। कक्षाएं किसी भी अन्य की तरह वस्तुएं होती हैं जो कि किसी अन्य की तरह वैरिएबल को सौंपी जाती हैं। यह केवल इतना है कि यदि आप निरंतर कक्षा वस्तु को असाइन करते हैं, तो name विधि है कि निरंतर का नाम वापस आ जाएगी)

उदाहरण:।

puts class Foo 
    name 
end 
# Foo 

लेकिन:

bar = Class.new 
bar.name # => nil 
BAR = bar 
bar.name #=> 'BAR' 
20
वर्ग ही अंदर

class_name = obj.class 
+1

आप एक वर्ग के रूप में 'वर्ग' का उपयोग करते हैं और 'वर्ग' एक आरक्षित कीवर्ड है। वैरिएबल 'क्लास' का नाम बदलें – cristian

+0

+1 बिल्कुल मुझे जो चाहिए था :) – onetwopunch

+0

'class_name' अभी भी उस चर के लिए एक महान नाम नहीं है, क्योंकि यह क्लास ऑब्जेक्ट है, नाम स्ट्रिंग नहीं है। चर के लिए एक बेहतर नाम 'klass' हो सकता है। – aridlehoover

0

मेरे मामले में, name विधि को अधिलेखित कर दिया था, मैं to_s मुझे इस दे पाते हैं एक ही परिणाम

class Foo 
puts self.name 
puts self.to_s 
end 
#=> Foo 
#=> Foo 
संबंधित मुद्दे