From: Yukihiro Matsumoto Date: 2008-10-18T19:11:45+09:00 Subject: [ruby-dev:36778] Re: [Bug #601] an instance of Bignum can have singleton methods まつもと ゆきひろです In message "Re: [ruby-dev:36569] [Bug #601] an instance of Bignum can have singleton methods" on Thu, 25 Sep 2008 22:10:30 +0900, Yuki Sonoda writes: |Bignumのインスタンスが特異メソッドを持てるようです。 一応、例外が出るんですけど。 | $ ruby19 -e 'x = (1 << 64); begin; def x.foo; p 1; end; rescue; end; x.foo' | #=> 1 |(by mameさん) このケースではわざわざ補足してますからねえ。 |現在の「Fixnumに対する一貫性 + どうせ誰も使わない」という設計意図からすれば特異クラスを作ろうとする時点でTypeErrorになるべきではないでしょうか。 いちいち、特異クラスを作る時点でNumericのサブクラスかどうか チェックするのはコストが増加するのであまりうれしくないので、 singleton_method_addedの中で定義されたメソッドを削除すること にします。もちろん、singleton_method_addedをundefすれば定義 できるようになってしまうわけですが、そこまでは面倒みきれない と思います。