Rubyのオブジェクトの同一性を調べる

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

Rubyのオブジェクト(クラスのインスタンス)は、ユニークなID(アイデンティティ、オブジェクトID)を持っています。
オブジェクトに対して、object_idメソッドを使うとオブジェクトIDを得られます。

スポンサーリンク

「equal?」は同じオブジェクトかどうか調べるメソッドで、「==」演算子は、オブジェクトの値が等しいかどうかを調べます。
true, またはfalseを返します。

オブジェクトの同一性と、オブジェクトの値が等しいか、を調べる

ary1 = [10, 20, 30, 40, 50]
ary2 = [10, 20, 30, 40, 50]
puts ary1.object_id
puts ary2.object_id
 
puts "--- 同じオブジェクトかどうか ---"
if ary1.equal?(ary2)
    puts "ary1 と ary2 は同じブジェクト"
else
    puts "ary1 と ary2 は違うオブジェクト"
end
 
puts "--- オブジェクトの値が同じかどうか ---"
if ary1 == ary2
    puts "ary1 と ary2 は同じ値"
else
    puts "ary1 と ary2 は違う値"
end

実行結果。

21627140
21627130
--- 同じオブジェクトかどうか ---
ary1 と ary2 は違うオブジェクト
--- オブジェクトの値が同じかどうか ---
ary1 と ary2 は同じ値

よく見ると、ary1とary2のobject_idが異なっていることを確認できます。

スポンサーリンク
 
スポンサーリンク