对不起,如果重复(我没有找到它)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