From: Yukihiro Matsumoto Date: 2008-05-13T09:58:04+09:00 Subject: [ruby-dev:34666] Re: 6 & Rational(7,2) まつもと ゆきひろです In message "Re: [ruby-dev:34665] Re: 6 & Rational(7,2)" on Tue, 13 May 2008 06:48:23 +0900, Nobuyoshi Nakada writes: | |なかだです。 | |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になる |ということはそこで情報が落ちるわけですよね。暗黙の変換はあまり望 |ましくないような気がするのですが。 おっしゃることはわかります。懸念は * ながらくそのように動作している互換性問題 * int/intがintでなくなる場合の救済 をどう考えるかですね。 まつもと ゆきひろ /:|)