From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2002-07-25T00:05:03+09:00 Subject: [ruby-list:35628] Re: new mathn [Re: Rational#to_int ← String#center] けいじゅ@日本ラショナルソフトウェアです. In [ruby-list:35624] the message: "[ruby-list:35624] Re: new mathn [Re: Rational#to_int ← String#center]", on Jul/24 11:39(JST) Yukihiro Matsumoto writes: >まつもと ゆきひろです >どのように実現するかはともかく、Perlの use integer のような >文法で指定できるとよいでしょうね。個人的には以下のようなのを >夢想してます。 >def foo(a,b) > a/b >end > > >def bar(a,b) > use DivFloat > a/b >end > >use DivRat > >a = 1 >b = 2 > >a/b # => Rational(1,2) >foo # => 0 >bar # => 0.5 これらって, 静的スコープですよね? そうでもないのかな? 動的スコープで良いなら, 実行コストは別にしてscope-in-state.rbで実現さ れています. これだと DivFloat.set_current ですが, useを関数にすれば同じ形で実現可能です. 静的スコープと動的スコープのどちらがよいかは, 使い方によるんでしょうね. >問題はどのように意味づけするかですが... 静的スコープならselector name spaceではないかと思うのですが? 違うのか な? ちなみに, scope-in-stateは私のオリジナルの考えで, もとはUMLの ClassInStateから来ています. ClassInStateは, クラスの一種ですがインスタ ンスの状態に応じて, クラスの定義を動的に変えようってものです. scope-in-stateの方は, 状態自身をスレッドに持たせその状態に応じて, クラ スの定義を変えようってものになっています. ただ, 自由に変えるのは不可能 なんで, 見た感じとしては状態に応じてincludeされているモジュールを入れ 替えてそのモジュールで定義されているメソッドが有効になるようになってい ます. __ ..............................石塚 圭樹@日本ラショナルソフトウェア... ----------------------------------->> e-mail: keiju@rational.com <<---