對不起,如果重複(我沒有找到它)Ruby中的「==」總是值相等嗎?
這只是爲了確認Ruby的運算符==
始終執行相等比較。 也就是說
a == b
a的值對B的值進行比較,而不是比,如Java,他們是否指向同一個對象在內存中(對於後一件事,在Ruby中,你應該使用a.object_id == b.object_id
)。
因此,其結果是安全的字符串值與== Ruby的比較(雖然它是不是安全在Java中這樣做)
感謝
編輯:
問題在於任何Ruby對象的默認==行爲,因爲它可能誤導Java-C-C++程序員,假設==b比較引用本身而不是參考內容。
無論如何,你可以看看這個代碼,使用字符串
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。
所以,在Ruby中,比較
a == b
檢查A和B的值
但是,分配
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
引用的鏈接不是重複的這個問題...... –
是的,我意識到的第一件事是在Ruby中,運算符'=='和函數'equals'與C語言中的預期結果相反。 – EliuX