From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1999-02-03T20:39:55+09:00 Subject: [ruby-dev:4647] Re: module Precision けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :4632 ] the message: "[ruby-dev:4632] Re: module Precision ", on Feb/03 17:15(JST) GOTO Kentaro writes: >ごとけんです >おおむね考えましたが結構ややこしいので、議論を求めます。 >まず、僕の考える精度変換のときの方針を説明します。 >ある、数値 num があったとき、この数値を別の精度をもつ >数値クラス OtherPrec のオブジェクトに変換するためには >num.prec(OtherPrec) で得られるようにしようというのが >基本方針です。 (中略) >そこで (*) のためには prec とは別の精度変換のメソッドが >必要です。これを terminal_prec (仮称)としますと、 (中略) >現在の僕の考えは、新しく精度をもった数値クラスを実装する人は >クラスメソッド induced_from と terminal_prec を用意し、 >Precition をインクルードするというモノです。 >これに対する何らかのコメントをどなたかお持ちですか?? 一所懸命検討して下さったのに何なんですが, 私は昔のままで良いのでは? と 思っています. module Precision def prec(klass) # 知らないクラスはklassにたのむ klass.induced_from(self) end def induced_from(num) 変換できない旨のエラーをだす end end class Integer include Precision def prec(klass) case klass when Integer # 知っているクラスはそれなりに変換 self when Float self.to_f : else # 知らないクラスは向うに任せる super end end end def Integer.induced_from(num) case num when 組み込み数値クラス num.to_i else super or エラー end end つまり, induced_fromで再び呼び出す必要はなくエラーを出せば良いと思うの ですが? というのもこのメソッドが呼ばれるのは, その前にprecでnumがklassに精度変 換する方法を知らないのでここに呼ばれているからです. だから, induced_fromで精度変換を知らないからといって再びnumに聞いても知らない に決まっていると思うのですが? # 何か勘違いしている?? __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@rational.com <<---