From: Tadashi Saito Date: 2003-06-25T13:36:16+09:00 Subject: [ruby-dev:20453] Re: [BigDecimal] proposal to change specification こんにちは、斎藤です。 お付き合いありがとうございます ^^; ----- Original Message ----- From: "Shigeo Kobayashi" Sent: Wednesday, June 25, 2003 9:41 AM Subject: [ruby-dev:20448] Re: [BigDecimal] proposal to change specification > bigdecimal.c 内に(仕様が変更される可能性のある)他クラスに > 関係する部分を入れたくないというのが本音です。 > 「Ruby + bigdecimal.dll(so) 」だけを配布したい場合もありますし。 そういう意味があったのですね。 では、[ruby-dev:16715]で石塚さんがおっしゃったように > 思います。で, bigfloat側はrequireされたときにrationalが既に読み込まれて > いたら bigloat-rational.rb を読み込み、逆にrationalがrequireされたときに、 > 既にbigfloatが読み込まれていたらbigloat-rational.rbを読み込むと. とするのはどうでしょうか。双方でたった1行ずつの変更です。 小林さんがおっしゃっているのがそう意味ではなく、BigDecimalが Rationalを知っている状態にしたくない、ということでしたら、 > require 'bigdecimal' > require 'rational' > と書いた時点で、相互変換のメソッドが使える状態 というのは無理そうなので、あきらめます。 とりあえずは、石塚さん案対応のパッチを。 (intern.h内の関数を使うのはお行儀が良くない?) Index: ext/bigdecimal/bigdecimal.c =================================================================== RCS file: /src/ruby/ext/bigdecimal/bigdecimal.c,v retrieving revision 1.6 diff -u -r1.6 bigdecimal.c --- ext/bigdecimal/bigdecimal.c 6 May 2003 13:18:26 -0000 1.6 +++ ext/bigdecimal/bigdecimal.c 25 Jun 2003 04:29:00 -0000 @@ -1445,6 +1445,8 @@ rb_define_singleton_method(rb_cBigDecimal, "mult!", BigDecimal_mult3, 3); rb_define_singleton_method(rb_cBigDecimal, "div!",BigDecimal_divmod4, 4); #endif /* USE_MUTABLE_METHOD */ + + if(rb_provided("rational")) rb_require("bigdecimal-rational"); } /* Index: lib/rational.rb =================================================================== RCS file: /src/ruby/lib/rational.rb,v retrieving revision 1.12 diff -u -r1.12 rational.rb --- lib/rational.rb 16 May 2003 17:18:56 -0000 1.12 +++ lib/rational.rb 25 Jun 2003 04:29:00 -0000 @@ -375,3 +375,5 @@ alias ** rpower end end + +require 'bigdecimal-rational' if defined? BigDecimal --- 斎藤ただし