2010-07-19 6 views
10

आरएसपीईसी में, should == ... और should eql(...) का उपयोग करने के बीच क्या अंतर है? मैंने देखा कि आरएसपीईसी दस्तावेज हमेशा eql का उपयोग करता है, लेकिन == कम टाइपिंग और पढ़ने में आसान है। मैं क्या खो रहा हूँ?आरएसपीसी: "चाहिए == ..." और "चाहिए eql (...)"

+1

http://batsov.com/articles/2011/11/28/ruby-tip-number-1-demystifying-the-difference-between-equals-equals-and-eql/ – Kris

उत्तर

16

यह बल्कि सरल, वास्तव में है: should ==== संदेश परीक्षण विषय के लिए भेजता है should eql परीक्षण विषय के लिए eql? संदेश भेजता है। दूसरे शब्दों में: दो अलग-अलग परीक्षण दो पूरी तरह से अलग संदेश भेजते हैं जो दो पूरी तरह से अलग तरीकों का आह्वान करते हैं और इस प्रकार दो पूरी तरह से अलग-अलग चीजें करते हैं। विशेष रूप से, eql?== से कठोर है लेकिन equals? से कम सख्त है।

15

वे आम तौर पर बराबर हैं, लेकिन हमेशा नहीं:

1 == 1.0 # => true 
1.eql? 1.0 # => false 
+0

touche ... touche। .. –

संबंधित मुद्दे