如果有重复的话我很抱歉(我没有发现)
这只是为了确认 Ruby 的运算符 ==
总是执行相等比较。即:
a == b
与Java不同,Ruby将比较a的值和b的值,而不是它们是否指向内存中的相同对象(对于后者,在Ruby中,应使用a.object_id == b.object_id
)。
因此,在Ruby中可以安全地使用==比较字符串值(而在Java中这样做是不安全的)。
谢谢
编辑:
问题在于任何Ruby对象的默认==行为,它可能会误导Java-C-C++程序员,认为a==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
==
和函数equals
的顺序与C语言等语言中所期望的相反。 - EliuX