あづみです。

ABE Shigeru <shiger-a / nifty.com> wrote:
>  ちなみに、これは Hash を継承したクラスで
> 
> def eql? (object) self == object end
> 
>  とメソッドを定義したら解消しました。

これだけで上手くいきますか?
Hash#hash を置き換えないとだめだと思うのですけれど。

class HashEX < Hash
  def eql?(obj)
    self == obj
  end
  def hash
    self.inspect.hash
  end
end

とか。

# でもこんなことしてなんか弊害ないんかなぁ


> 意図的にこのような仕様にしているのでしょうか。

というかむしろ Numeric や String の方が特別な気が。
inspect した見た目が同じなら中身全部同じというわけではないですから。

a = [1,1]
b = {1=>[1,1]}
c = {1=>a}
p b        # {1=>[1,1]}
p c        # {1=>[1,1]}
a[1] = 2
p b        # {1=>[1,1]}
p c        # {1=>[1,2]}


安積伸弥
adzumi / denpa.org