From: Tadashi Saito Date: 2003-07-22T01:05:50+09:00 Subject: [ruby-dev:20763] Re: [BigDecimal] new: necessity of 2nd argument 斎藤です。 ----- Original Message ----- From: "Shigeo Kobayashi" Sent: Monday, July 21, 2003 11:20 PM Subject: [ruby-dev:20758] Re: [BigDecimal] new: necessity of 2nd argument > > BigDecimal.new("3.14", 10) という時の第二引数について、 > > 存在意義が良く分かりません。 > これは、将来のための予約とでも考えて下さい。 > 今は、あまり意味を持たないです。 >   ==> ってドキュメントに入れるべきでした。 ええと、それならば、その「将来」まで削除しておくべきではないでしょうか。 省略可の引数とはいえ、意味を持たないインターフェースをわざわざ 提供する必要もないでしょうし、ユーザの混乱の元にもなり得ます。 一般論としては、インターフェースは必要最小限に抑えるもの、 という理解しています。 どちらにせよドキュメント中の例からは、第二引数を用いたものは 削除すべきかと思います。 また将来、第二引数を扱う機能を追加するときにも、現在のように 省略可能にすれば互換性は保たれるので「予約」は意味を持たないように 思えますが、どうでしょうか。 Index: bigdecimal.c =================================================================== RCS file: /src/ruby/ext/bigdecimal/bigdecimal.c,v retrieving revision 1.10 diff -u -r1.10 bigdecimal.c --- bigdecimal.c 18 Jul 2003 15:23:23 -0000 1.10 +++ bigdecimal.c 21 Jul 2003 15:40:46 -0000 @@ -1141,40 +1141,24 @@ } static VALUE -BigDecimal_global_new(int argc, VALUE *argv, VALUE self) +BigDecimal_global_new(VALUE self, VALUE iniValue) { ENTER(5); Real *pv; - S_LONG mf; - VALUE nFig; - VALUE iniValue; - if(rb_scan_args(argc,argv,"11",&iniValue,&nFig)==1) { - mf = 0; - } else { - mf = GetPositiveInt(nFig); - } SafeStringValue(iniValue); - GUARD_OBJ(pv,VpCreateRbObject(mf, RSTRING(iniValue)->ptr)); + GUARD_OBJ(pv,VpCreateRbObject(0, RSTRING(iniValue)->ptr)); return ToValue(pv); } static VALUE -BigDecimal_new(int argc, VALUE *argv, VALUE self) +BigDecimal_new(VALUE self, VALUE iniValue) { ENTER(5); Real *pv; - S_LONG mf; - VALUE nFig; - VALUE iniValue; - if(rb_scan_args(argc,argv,"11",&iniValue,&nFig)==1) { - mf = 0; - } else { - mf = GetPositiveInt(nFig); - } SafeStringValue(iniValue); - GUARD_OBJ(pv,VpNewRbClass(mf, RSTRING(iniValue)->ptr,self)); + GUARD_OBJ(pv,VpNewRbClass(0, RSTRING(iniValue)->ptr,self)); return ToValue(pv); } @@ -1370,11 +1354,11 @@ rb_cBigDecimal = rb_define_class("BigDecimal",rb_cNumeric); /* Global function */ - rb_define_global_function("BigDecimal", BigDecimal_global_new, -1); + rb_define_global_function("BigDecimal", BigDecimal_global_new, 1); /* Class methods */ rb_define_singleton_method(rb_cBigDecimal, "mode", BigDecimal_mode, 2); - rb_define_singleton_method(rb_cBigDecimal, "new", BigDecimal_new, -1); + rb_define_singleton_method(rb_cBigDecimal, "new", BigDecimal_new, 1); rb_define_singleton_method(rb_cBigDecimal, "limit", BigDecimal_limit, -1); rb_define_singleton_method(rb_cBigDecimal, "double_fig", BigDecimal_double_fig, 0); rb_define_singleton_method(rb_cBigDecimal, "induced_from", BigDecimal_induced_from, 1); Index: bigdecimal_en.html =================================================================== RCS file: /src/ruby/ext/bigdecimal/bigdecimal_en.html,v retrieving revision 1.5 diff -u -r1.5 bigdecimal_en.html --- bigdecimal_en.html 18 Jul 2003 15:23:23 -0000 1.5 +++ bigdecimal_en.html 21 Jul 2003 15:40:46 -0000 @@ -81,7 +81,7 @@
    require 'bigdecimal'
    a=BigDecimal::new("0.123456789123456789")
-   b=BigDecimal("123456.78912345678",40)
+   b=BigDecimal("123456.78912345678")
    c=a+b
 
Index: bigdecimal_ja.html =================================================================== RCS file: /src/ruby/ext/bigdecimal/bigdecimal_ja.html,v retrieving revision 1.5 diff -u -r1.5 bigdecimal_ja.html --- bigdecimal_ja.html 18 Jul 2003 15:23:23 -0000 1.5 +++ bigdecimal_ja.html 21 Jul 2003 15:40:46 -0000 @@ -84,7 +84,7 @@
 require 'bigdecimal'
 a=BigDecimal::new("0.123456789123456789")
-b=BigDecimal("123456.78912345678",40)
+b=BigDecimal("123456.78912345678")
 c=a+b
 
-- 斎藤ただし