From: gotoken@... (GOTO Kentaro) Date: 1999-02-03T21:48:57+09:00 Subject: [ruby-dev:4648] Re: module Precision ごとけんです In message "[ruby-dev:4647] Re: module Precision" on 99/02/03, 石塚圭樹 writes: >一所懸命検討して下さったのに何なんですが, それはいいんです。一所懸命考えたら採用ってのも変だし(^^;; > 私は昔のままで良いのでは? と >思っています. > >module Precision > def prec(klass) > # 知らないクラスはklassにたのむ > klass.induced_from(self) > end > > def induced_from(num) > 変換できない旨のエラーをだす > end >end これは気持は分かるのですが、mixin でクラスメソッドを 定義することはできるのですか?? >つまり, induced_fromで再び呼び出す必要はなくエラーを出せば良いと思うの >ですが? > >というのもこのメソッドが呼ばれるのは, その前にprecでnumがklassに精度変 >換する方法を知らないのでここに呼ばれているからです. だから, >induced_fromで精度変換を知らないからといって再びnumに聞いても知らない >に決まっていると思うのですが? 考え方はあってます。 問題は induced_from と prec の実装で、どこまで他のクラスの メソッドを使ってよいかという基準が曖昧だということです。 この点をはっきりさせるために、 * prec (-> induced_from (-> terminal_prec)) * induced_from の実装で prec を使うのは禁止 * terminal_prec の実装で prec や induced_from を 使うのは禁止。 という導出のモデルを明確にした方がよいと考えました。 それで、 In [ruby-dev :4632 ] the message: "[ruby-dev:4632] Re: module Precision ", on Feb/03 17:15(JST) GOTO Kentaro writes: >ごとけんです >現在の僕の考えは、新しく精度をもった数値クラスを実装する人は >クラスメソッド induced_from と terminal_prec を用意し、 >Precition をインクルードするというモノです。 >これに対する何らかのコメントをどなたかお持ちですか?? というわけです。 やっぱり冗長に思われますか?? もちろん induced_from で prec を使わないといっても他の メソッドから間接的に prec を使ってしまうとやっぱり困ります。 が、上の導出モデルを書いておく場所として、prec のマニュアルと いうのはよいかなとも思います。さもなくば、昔のままだと、 * prec の実装で induced_from を使うのは禁止 もしくは * induced_from の実装で prec を使うのは禁止 というようなことをどこかに明示しておく必要があると思います。 -- gotoken