[#30743] 大きな数の大まかな割り算 — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

17 messages 2007/05/01

[#30827] Supporting Fiber — SASADA Koichi <ko1@...>

 ささだです。

22 messages 2007/05/27

[ruby-dev:30745] Re: operator redefinition in YARV

From: SASADA Koichi <ko1@...>
Date: 2007-05-02 01:55:43 UTC
List: ruby-dev #30745
 ささだです.

Yukihiro Matsumoto wrote:
> YARVでは演算子メソッドの再定義にまだ対応していないのですね。
> mathnが動きません。

 対応しています.

[Fixnum, Float, Bignum].each{|klass|
  klass.class_eval{
    [:+, :-, :/, :*].each{|op|
      eval %{
        def #{op}(a)
          '#{klass}##{op}'
        end
      }
    }
  }
}

b = 100 ** 100
p([1+2, 1-2, 1/2, 1*2])
p([1.1+2, 1.1-2, 1.1/2, 1.1*2])
p([b+b, b-b, b/b, b*b])
#=>
["Fixnum#+", "Fixnum#-", "Fixnum#/", "Fixnum#*"]
["Float#+", "Float#-", "Float#/", "Float#*"]
["Bignum#+", "Bignum#-", "Bignum#/", "Bignum#*"]


 多分,バグがあると思うんですが,(出来れば小さい)再現プログラムを教え
ていただけませんか.

-- 
// SASADA Koichi at atdot dot net



In This Thread