[#20392] [BigDecimal] proposal to change specification — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤と申します。

25 messages 2003/06/20
[#20407] Re: [BigDecimal] proposal to change specification — "Shigeo Kobayashi" <shigeo@...> 2003/06/22

小林です。

[#20447] [BigDecimal] renaming proposal — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤です。

47 messages 2003/06/24
[#20621] Re: [BigDecimal] renaming proposal — "Shigeo Kobayashi" <shigeo@...> 2003/07/11

小林@MAILチェック中です。

[#20628] Re: [BigDecimal] renaming proposal — "Shigeo Kobayashi" <shigeo@...> 2003/07/11

小林です。

[ruby-dev:20446] Re: [BigDecimal] proposal to change specification

From: "Tadashi Saito" <shiba@...2.accsnet.ne.jp>
Date: 2003-06-24 17:35:01 UTC
List: ruby-dev #20446
斎藤です。

----- Original Message ----- 
From: <nobu.nakada@nifty.ne.jp>
To: "ruby developers list" <ruby-dev@ruby-lang.org>
Sent: Tuesday, June 24, 2003 3:18 PM
Subject: [ruby-dev:20440] Re: [BigDecimal] proposal to change specification

> > これは作者の小林さんが、bigdecimal-rationalが最後にrequireされる事を
> > 意図されているのかなということを、勝手に想像してしまいました。
>
> ということであればbigdecimal-rational.rbの最初に
>
>   require 'bigdecimal'
>   require 'rational'
>
> を追加するのが一番素直な解決策だと思うのですが、それだとなにか
> まずいのだろうか、ということです。

なるほど、理解しました。

しかし、 [ruby-dev:20436]で自分が提示した些細な変更をすれば
bigdecimal-rationalが最後にrequireされる必要性はなくなるはずです
ので、追加は必要ないと思います。


…かといって、橋渡し役の第三のライブラリを明示的に
requireするのも冗長だと感じてきました。

少し考えたのですが、ベストなのは
    require 'bigdecimal'
    require 'rational'
と書いた時点で、相互変換のメソッドが使える状態になって
いることではないかと思います。

小林さんがbigdecimal-rationalの位置をどう捉えているか
にも寄りますが、bigdecimalの一部と見て、bigdecimal.oの
内部でbigdecimal-rational.rbを読み込んでしまうのは
どうでしょうか。

過去には、[ruby-dev:16888]で小林さんが

>「最初から相手を必要としてしまうのを避ける」ために
> BigDecimal op Rational -> BigDecimal を実装するの
> は bigdecimal.c ではなくて bigdecimal-rational.rb 上

と発言されていますが、bigdecimal内部で最初から
bigdecimal-rationalをrequireしても、
「最初から相手(=Rational)がrequireしてあることが必要」
ということにはなりませんよね。

問題はRationalを使わないとき、BigDecimal#to_rと
Rational#to_dの定義が無駄になるというくらいで、
大したものではないと思いますが、いかがでしょうか?

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 24 Jun 2003 17:17:26 -0000
@@ -1438,6 +1438,8 @@
     rb_define_method(rb_cBigDecimal, "truncate",  BigDecimal_truncate, -1);
     rb_define_method(rb_cBigDecimal, "_dump", BigDecimal_dump, -1);

+    rb_require("bigdecimal-rational");
+
 #ifdef USE_MUTABLE_METHOD
     rb_define_singleton_method(rb_cBigDecimal, "assign!", BigDecimal_assign, 3);
     rb_define_singleton_method(rb_cBigDecimal, "add!", BigDecimal_add3, 3);

---
斎藤ただし (bladeに感謝)


In This Thread