From: keiju@... (Keiju ISHITSUKA) Date: 1997-08-12T14:19:43+09:00 Subject: [ruby-dev:108] Re: meta programming features けいじゅ@いそうろう.日本ラショナルです. In the message: "[ruby-dev:104] Re: meta programming features ", on Aug/12 12:55(JST) Yukihiro Matsumoto writes: >|あれ? eval()の動作ってそうじゃないんでしたっけ? Kernelのprivateメソッ >|ドを定義しているんでしたっけ? > >Objectクラスにメソッドを定義します. >|確認ですが, トップレベルでのselfはmainオブジェクトで良いんですよね? >|evalは, Kernelの定数とメソッドを定義しているのですか? > >Obejctクラスの定数とメソッドを定義しています. うーん. なるほど.... 動作の違いを表にすると以下のようになっているんで すね? 現在のeval() class 特異class inst. 現在のコンテキスト 定数 (R/W) (R/W) R/W メソッド定義 (R/W) R/W インスタンス変数 (R/W) R/W ローカル変数 R/W # (...)は現在のコンテキスト==evalのレシーバのため Object#eval() 定数 R/W(?) R/W(?) R/W R/O(?) メソッド定義 R/O (R/W) R/W インスタンス変数 R/W ローカル変数 R/W # 良く考えたら定数のアクセスは同なるか未定義. インスタンスから見たクラ # ス定数は, classのクラス定数になるのか? 特異クラスのクラス定数になる # のか... Module#eval 定数 R/W R/0 メソッド定義 R/W インスタンス変数 R/W ローカル変数 R/W 特異Module#eval 定数 R/O(2) R/W R/0(1) メソッド定義 R/O R/W インスタンス変数 R/W ローカル変数 R/W # (1),(2) (1)が優先 なるなる. 良くわかってきました. 松本氏が気にしていたのは, Object#eval()の定数とメソッド定義のところだったんですね. で. やっとはなしが戻りますが: >という点で,現在の実装ではこの二つのクラスは一致するようになっていま >す.これを違えるのは望ましくないと思っていますが,どうしても必要なら >ば変えても良いです. これってどういう意味ですか? 現行のevalをObject#eval()の動きに合わせて も良いという意味ですか? >それはそうとqmail導入予定です. すばらしい!! __ ..........................................石塚 圭樹@日本ラショナル... ----------------------------------->> e-mail: keiju@bc.mbn.or.jp <<---