抱歉,如果重复(我没找到)
这只是为了确认 Ruby 的运算符==
总是执行相等比较。IE
a == b
将 a 的值与 b 的值进行比较,而不是像 Java 那样,它们是否指向内存中的同一个对象(对于后者,在 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