From: Nobuyoshi Nakada Date: 2008-05-13T06:48:23+09:00 Subject: [ruby-dev:34665] Re: 6 & Rational(7,2) なかだです。 At Mon, 12 May 2008 23:58:45 +0900, 石塚圭樹 wrote in [ruby-dev:34664]: > In [ruby-dev :34656 ] the message: "[ruby-dev:34656] 6 & Rational(7,2) > ", on May/12 18:03(JST) Tanaka Akira writes: > > >以下のように、6 & Rational(7,2) は 2 になりますが、左右を入 > >れ換えて Rational(7,2) & 6 ならエラーになります。 > > > >これは意図された挙動でしょうか。 > > うーん. 前者はやりすぎだと思います. > > 原因は, {Fixnum,Bignum}#& の中で, other.to_intしていて そこでRational > がIntegerに変換されるからです. > > 同じことは, Floatでもいえます. > > ビット演算での to_int はやり過ぎのような気がしますが, どうなんでしょう? 私はどちらかというと、Integer以外のNumericにto_intを定義するべき ではないのではないか、と思います。FloatやRationalがIntegerになる ということはそこで情報が落ちるわけですよね。暗黙の変換はあまり望 ましくないような気がするのですが。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦