मैं एक वर्ग है कि मैं दोनों तार और प्रतीकों एक मामले बयान में करने के लिए की तुलना करना चाहते है, तो मैंने सोचा कि मैं सिर्फ अपनी कक्षा के लिए ===() विधि ओवरराइड और सभी सोने होगा। हालांकि मामला कथन के दौरान मेरी ===() विधि कभी नहीं बुलाई जाती है। कोई विचार?आप रूबी केस समानता ऑपरेटर को कैसे ओवरराइड करते हैं? (===)
यहाँ कुछ उदाहरण कोड है, और क्या एक आईआरबी सत्र में होता है:
class A
def initialize(x)
@x=x #note this isn't even required for this example
end
def ===(other)
puts "in ==="
return true
end
end
आईआरबी (मुख्य): 010: 0> एक = A.new ("हाय")
=> #
आईआरबी (मुख्य): 011: 0> मामला एक
आईआरबी (मुख्य): 012: 1> जब "नमस्ते" तो 1
आईआरबी (मुख्य): 013: 1 बाकी> 2
आईआरबी (मुख्य) : 014: 1> अंत
=> 2
(यह संदेश प्रिंट कभी नहीं और हमेशा सच लौटना चाहिए वैसे भी) ध्यान दें कि आदर्श मैं अग्रिम में एक
def ===(other)
#puts "in ==="
return @x.===(other)
end
धन्यवाद करना चाहते हैं।
कूल। यह बताता है, और यह काम करता है! क्या केस स्टेटमेंट करने का यह तरीका काउंटर अंतर्ज्ञानी लगता है? – Marcin
अच्छा। हां, यह थोड़ा गन्दा लगता है, लेकिन मैंने इस जवाब के लिए सिंटैक्स को बहुत सोचा नहीं था। आप शायद कुछ और संक्षिप्त वाक्यविन्यास के साथ आ सकते हैं, या आप एलएचएस पर कक्षाओं में कक्षाओं में ओवरराइड ऑपरेटर === जैसे कुछ बुरा कर सकते हैं। – janm
धन्यवाद - मैं थोड़ा अधिक संक्षिप्त हो सकता है लेकिन यह भी मुझे लगता है कि मैं शायद इस काम के लिए गलत उपकरण (मामला) का उपयोग कर रहा है, लेकिन यह काम करता है, तो आप (मैं इस कल कहा है चाहिए) धन्यवाद। – Marcin