Rubyリファレンス: Home

compare_by_identity (Hash)

Edit   History

Ruby 1.9

標準クラス・モジュール > Hash > compare_by_identity

hash.compare_by_identity

compare_by_identityメソッドを呼び出すと、そのハッシュはキーを比較するときに常にオブジェクトIDで比較するようになります。レシーバ自身を変更するメソッドです。戻り値はレシーバ自身です。

ハッシュ値が同じオブジェクトや、eql?メソッドがtrueになるオブジェクト同士であっても、別のキーとして扱われます。

hash = Hash.new
hash.compare_by_identity
str = "a"
hash[str] = 1
hash["a"] = 2   # 別のキーに保存される
p hash
 
p hash["a"]     # キーは見つからない
p hash[str]     # これはOK
{"a"=>1, "a"=>2}
nil
1

関連項目