From: Shin-ichiro HARA Date: 2008-04-22T18:59:18+09:00 Subject: [ruby-dev:34485] Re: coerce with Rational and Complex 原です。 > 遠藤と申します。 > > 以下の挙動は意図的でしょうか。 > > p 1.coerce(Rational(1, 2)) #=> [0.5, 1.0] > > 直感的には [Rational(1, 2), Rational(1, 1)] が欲しいです。 > また、以下はどうでしょうか。 > > p 1.coerce(Complex(1, 1)) #=> can't convert 1+1i into Integer > > [Complex(1, 0), Complex(1, 1)] が欲しい気分です。 原則として、coerce は、(新しい数).coerce(古い数)のみが問題なので、 1.coerce(Rational(1,2)) のような、(古い数).coerce(新しい数)という パターンでは起動しないはずです。だから、変な値を返しても、例外でもかま わないです。もちろん、それっぽい値を返しても害はないですが。いや、規約 を破ったしるしに例外を出した方がかえっていいかな。