From: sinara@... Date: 2003-05-03T14:11:02+09:00 Subject: [ruby-dev:20146] Re: scope-in-state and import-module 原です。 in [ruby-dev:20142]: >けいじゅ@ラショナルソフトウェアです. >>ふむ、そうなんだ。UML 勉強しようっと。(^^; > >私のお勧めは『UMLリファレンスマニュアル』です. 辞書ですが, 読みごたえ >があります. ちなみに, 監訳者も読破することを奨めています. むぐぅ。 >>>中身と言うか, それ以上に外側(使い方)のベーシックなコンセプトもといいた >>>いですが(^^;;; >>このコンセプトって、クラスの性質をを一時的に変更するっていう >>ことですかね。つまり元々メソッドにスイッチを置いて切り替える >>のではなく、メソッドの内部に立ち入らずすげ替えてしまうってこ >>と? > >こっちでしょう. きっと. 私は実は include の動作というのは、今の import-module(の中の adopt_module)のように動作すると誤解していたことがありまして: In [ruby-dev:1145] the message: "[Q] include module", sinara wrote: >【2】一群の関数 f1, f2, f3,... の定義を実行時に変えたい時に、い >い方法はあるでしょうか? > >最初、モジュールで > >module A > def f1 ... end > def f2 ... end > ... >end > >定義集を作っておいて ... で、石塚さんの sope-in-state でそういうことが技術的に可能であるのを 見てびっくりしたんですよ。 >>それともクラスの性質をオブジェクトとして実現するということか >>な。 > >うーん. 意味がわかりませんが, そうなっています? この私の発言はちょっと考えなしでした。無かったことに。_o_;; >>>ただ, newが必要なのはモジュールを作る側であって, 利用する側ではないの >>>でそれほど問題ないと思っています. >> >>「利用する側」ってのは「ライブラリの作者」ってことですよね。 > >いえ. ライブラリを利用する側です. わたなべさんのいっているnewって: > > ScopeS = ScopeInState.new(S) > >の事だと思うのですが, これはライブラリ側で行っておくものです. あれ、「ライブラリ」の意味がすれ違っちゃったかな。つまり、 jcode.rb の作者が jcode.rb の中で module JcodeS class String ... end end JcodeScope = ScopeInState.new(JcodeS) などと記述しておき、ユーザーは JcodeScope を使えばよい、と言う 話ですよね。 >セレクタネームスペースの話もありますし, それが固まってからの方がよいか >も. セレクタネームスペースの動的スコープ版見たいな感じですし. 「セレクタネームスペース」ってどんなんです?「ネームスペース」って いうたら XML しか知らなくて、、、 -------- 実は import-module にはまだ迷っている所があって、 * import_module, import, adopt_module, adopt っていう ネーミングはどうなのか。use_module はどうなのか。use って、将来予約語になったりしないかな。 * klass1.import_module(mod2) で、メソッドの可視性はどうするか。 klass1 を優先にするか、mod2 を優先にするか。 * シングルスレッド版とマルチスレッド版をどういう方法で使い 分けてもらうか。 * そもそもこんなものが流行りすぎても、Ruby にとってマイナ スではないか。 などなどです。だから、やっぱり今標準添付ってのは時期尚早だなあ。 皆さんの意見を聞きたいです。