重複している場合は申し訳ありません(見つかりませんでした)
==
これは、Rubyの演算子が常に等価比較を実行することを確認するためだけのものです。つまり
a == b
Javaのように、メモリ内の同じオブジェクトを指しているかどうかではなく、aの値をbの値と比較します(後者の場合、Rubyではa.object_id == b.object_id
)を使用する必要があります。
したがって、結果として、Rubyでは文字列値を==と比較するのが安全です(Javaでは安全ではありませんが)
ありがとう
編集:
問題は、Rubyオブジェクトのデフォルトの==動作にあります。これは、a == bが参照の内容ではなく、参照自体を比較すると仮定して、Java-C-C++プログラマーを誤解させる可能性があるためです。
とにかく、文字列を使用してこのコードをチェックアウトできます
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