From: Yusuke ENDOH Date: 2008-02-05T22:19:29+09:00 Subject: [ruby-dev:33604] Hash#compare_by_identity makes string unusable as key 遠藤と申します。 Hash#compare_by_identity を設定すると、キーが文字列の場合に 値が取り出せなくなります。これは仕様でしょうか。 $ ./ruby -ve ' a = "foo" h = { a => "bar" } h.compare_by_identity p h[a] #=> nil ' ruby 1.9.0 (2008-02-05 revision 15377) [i686-linux] nil Hash#[]= が、キーが文字列の場合だけ dup して freeze してから 保存するのが原因のようです。 今日までこのメソッドを知らなかったんですが、このメソッドの 目的は何なんでしょうか。高速化? メソッド名がハッシュと何かを比較するみたいだとか、元に戻す 方法がなくていいのかとか、いろいろ気になる感じです。 -- Yusuke ENDOH