ふなばです。 At 1999-09-07T03:22:24+0900 (2451428.26556JD), matz / netlab.co.jp (Yukihiro Matsumoto) wrote: matz> とも思ったのですが、それはまた別のような気がしてきました。た matz> とえばStringのサブクラスを作ってハッシュのキーにした場合、 matz> hashの値が等しくeql?が成立するならば、それは文字列と同様に振 matz> 舞うべきだと思います。そういう意味でクラスが等しいことは必須 matz> ではない、と。 eql? の役目は、ハッシュのキーに供したさいに、等価と見なしてよいか検査 するためのものらしいので、それはそうだなと思いますです。 一般的には必須でないけど、Date では == は比較対象に数値をとれるので、 eql? を == をつかって実装する際には、あのような検査をしようと思います。 ちゃんと確認してないんですけど、 a.hash == a.hash # => true hash = {} hash[a] = 0 hash[b] = 1 としたら、b.eql?(a) となるんじゃないかと思うんですが、a が先に登録され るのは、偶然にすぎないわけで、a.eql?(b) となることもあるはずですよね。 これで違いがでる可能性はあるんですよね、ちょっと心配。 ふなば ただよし