क्षमा करें अगर डुप्लिकेट (मुझे यह नहीं मिला)क्या रूबी में "==" हमेशा समानता का महत्व है?
यह केवल यह पुष्टि करने के लिए है कि रूबी के ऑपरेटर ==
हमेशा समानता तुलना करता है। आईई।
a == b
, ख के मूल्य के खिलाफ एक के मूल्य की तुलना बजाय से, जावा की तरह, चाहे वे स्मृति में एक ही वस्तु को इंगित (यह बाद बात के लिए, रूबी में, आप a.object_id == b.object_id
का उपयोग करना चाहिए)।
:
इस प्रकार, एक परिणाम के रूप में यह रूबी में == साथ स्ट्रिंग मानों की तुलना करने
धन्यवाद
संपादित (जबकि यह सुरक्षित जावा में ऐसा करने के लिए नहीं है) के लिए सुरक्षित है सवाल किसी भी रूबी ऑब्जेक्ट के लिए डिफ़ॉल्ट == व्यवहार पर है, क्योंकि यह जावा-सी-सी ++ प्रोग्रामर को गुमराह कर सकता है, जो कि == बी संदर्भ संदर्भों को संदर्भित करता है, संदर्भ सामग्री नहीं।
वैसे भी, आप इस कोड की जाँच कर सकते हैं, तार
one="hello"
two="he"
two << "llo"
if one == two
puts "surprise: comparing values, not like in Java"
end
if not one.object_id == two.object_id
puts "obvious: do this to compare references"
end
संपादित 2 का उपयोग कर।
तो, रूबी, तुलना
a == b
चेकों एक और ख के मूल्यों
लेकिन, असाइनमेंट
a = b
मूल्यों की प्रतिलिपि नहीं है, लेकिन करने के लिए ए और बी बिंदु बनाता में वही वस्तु!
पिछले कोड
puts one.object_id
puts two.object_id
puts " and now "
one = two
puts one.object_id
puts two.object_id
हां। http://stackoverflow.com/questions/1710369/most-concise-way-to-test-string-equality-not-object-equality-for-ruby-strings – nneonneo
संदर्भित लिंक का डुप्लिकेट नहीं है यह सवाल ... –
हां पहली बात यह है कि मुझे एहसास हुआ कि ऑपरेटर '==' रूबी में और फ़ंक्शन 'बराबर' सी की तरह भाषाओं में अपेक्षा की जाती है। – EliuX