ふなばです。 At 1999-09-03T13:13:59+0900 (2451424.67638JD), matz / netlab.co.jp (Yukihiro Matsumoto) wrote: matz> |どこが責任持つかは別として、eql? において、上のような検査が必要なことは matz> |確かなんですよね。とすれば、date[23]? でも、そのような変更をしなければ matz> |いけないのかな。 matz> このような型の検査は「必要」ではないはずです。ただパフォーマ matz> ンスのための刈り込みをしたいと思っただけのはずです。というわ matz> けで、そうなってないからという理由で動かないのは、やはり matz> Comparable#== の定義に問題ありでしょう。もう直しちゃいました。 んー、Comparable#== はわかるのですが、型の検査がないなら、 eql? は == と同じことになってしまうのではないですか。 この場合、直接的には、もう一方のオブジェクト (date3 ですが) が、 coerce を持っていないから、エラーになったわけで、もし持っていたら、 同じと判断される可能性があるわけですよね。 そういうもんかというと、そうでもない、Rational(1,1) == 1 は成り立っても、 Ratioanl(1,1).eql?(1) はならない、それは型が違うからですよね。 ふなば ただよし