From: Shigeo Kobayashi Date: 2003-07-08T14:24:49+09:00 Subject: [ruby-dev:20543] Re: [BigDecimal] changing rule of coerce 小林です。 ----- Original Message ----- From: "Yukihiro Matsumoto" Subject: [ruby-dev:20532] Re: [BigDecimal] changing rule of coerce > いいえ、「美しくない」には同意しません。私の目には > > d2 = d * "5.6789" > > の方が美しくないです。意図が不明瞭なので。特に むむっ Ruby 的な観点から「意図が不明瞭」であることには同意します。 しかし、個人的には VB や Excel で慣れてしまっているせいか d2 = d * CDbl("5.6789") とやるより、d2 = d * "5.6789" のほ うがはるかに自然です(あくまでも個人的見解)。 > string * num > > というメソッドがあるので余計に、です。ただ、「長いぞ」には同 > 意しますよ。 じゃ、大体 65% は一致しているということですね! ^.^;; string * num と整合性がとれないのは百も承知してます。 多分、石塚さんもこういった不一致を念頭に「使いづらいもの」と表現 しているものと思います。 しかし、もし Float クラスにリテラルが無くて  a = Float("1.234") * Float("5.678") /Float("3.14") 等と書かなければいけないとしたらどうでしょう? ちょっとした検算をするのに irb からキーインして電卓のように使用 するのは Float にしろ BigDecimal にしろよくやることです。 実際にやってみれば、どちらが使いづらいか自明だと思うのですが? 自分なりの熟慮の末に「整合性が無くてもリテラルが無い以上仕方 がない」と結論付けていますし、この点に関しては妥協する気はあり ません(「妥協」という言葉は不適切かもしれませんが)。 とはいっても、Ruby 設計者であるまつもとさんの統一性を重視する 姿勢を否定できないのも当然といえば当然ですよね。 どうしようかなぁ...... 取りあえず #ifdef ENABLE_STRING_NUMBER とでもして、オプション としてから、ドキュメントに記述するということでどうでしょう? デフォルトは #define ENABLE_STRING_NUMBER としたいところだけ ど、現状では #undef ENABLE_STRING_NUMBER が多数ですか... 他の人はどうなんでしょう? ---- 小林 茂雄 shigeo@tinyforest.jp