From: sinara@... Date: 1997-01-09T17:04:37+09:00 Subject: [ruby-list:1655] [Q] Use of '==', 'eql?' and 'hash' 原です。 Hash で使われるメソッド hash について質問です。 あるクラス Foo を定義します。 class Foo def initialize(a, b) @a, @b = a, b end end ここで、 (1) Foo の == を再定義するとそれに合わせて eql? も再定義 される様に思いますが、それは正しいですか? #正しいとするとマニュアルには書いてないのはまずいのでは。 さらに、例えば eql? を次の様に再定義します。 class Foo attr("a") attr("b") def eql?(x) @a == x.a || @b == x.b end end (2)ここで(しかたなく) @a と @b を attr で公開しましたが、 公開しないでこの eql? と同様なものは作れるでしょうか? (3)eql? を再定義したので hash も再定義すべきですが、 この例ではどのようにすればよいでしょうか? (4)eql? を再定義したのに hash は再定義しなかった場合、 どういう局面で不具合がありますか? ---===-=-=-=-=-=-=-=-=======--=-=-=-==-=-===-=-=-=-=-=-=--=-==-=-- Shin-ichro Hara(Nagaoka Univ.of Tech.)