मैं रूबी के case
सिंटैक्स का उपयोग कर रहा हूँ के रूप में इस के लिए कुछ सरल self.class
के आधार पर तर्क स्थापित करने के लिए:self.class === MyClass क्यों झूठी वापसी करता है, जबकि self.class == MyClass सत्य देता है?
case self.class
when FirstClass
do stuff....
when SecondClass
do other stuff...
end
मैं जल्द ही महसूस किया कि यह हमेशा करीब जांच करने पर nil.
देता है, मैंने पाया case
का उपयोग करता है ===
बजाय ==
जाँच करने के लिए समानता। मेरे टर्मिनल में self.class == FirstClass
चलाते समय मुझे true
मिलता है, हालांकि self.class === FirstClass
false
देता है।
माणिक दस्तावेज़ों में देख रहे हैं, मैंने पाया ===
की following explanation:
प्रकरण समानता - वर्ग वस्तु के लिए, प्रभावी रूप से बुला # ==, लेकिन आम तौर पर वंश द्वारा ओवरराइड के रूप में ही उपलब्ध कराने के लिए सार्थक अर्थ विज्ञान बयान के मामले में।
क्या कोई भी हो सकता है कि क्या हो रहा है पर कुछ प्रकाश डाला जा सकता है? अग्रिम में धन्यवाद।
यह मुझे प्रबुद्ध नहीं था, लेकिन कक्षा मॉड्यूल से निकलती है, जिसका === इम्प्ल्यू यहां है: http://ruby-doc.org/core-2.2.0/Module.html#3D -3 डी-3 डी-विधि –
http://stackoverflow.com/questions/4467538/what-does-the-operator-do-in-ruby – Dreamweaver
http://truffles.me.uk/rubys-equality-operator – oobivat