From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1997-08-12T12:38:09+09:00 Subject: [ruby-dev:104] Re: meta programming features けいじゅ@いそうろう.日本ラショナルです. In [ruby-dev :00102 ] the message: "[ruby-dev:102] Re: meta programming features ", on Aug/12 11:12(JST) matz@netlab.co.jp (Yukihiro Matsumoto) writes: >|と. 思ったんですが... evalとObject#eval(仮称)は非常に似ているんですよ >|ね... > >でも,違うんですよ. あらら... >というのも > >|1. トップレベルにおいて. >|eval()をトップレベルで行うのは, Object#eval()をトップレベルで行ってい >|るのと同じメソッドになりますよね. つまり, mainオブジェクトに対する >|Object#eval()とeval()は(このレベルに限れば)同じことを行っていません?? >違います.つまり,石塚さんのいうObject#eval()の動作ではトッ >プレベルのevalでメソッド定義するとmainオブジェクトの特異メソッ >ドを定義してしまいます.これはトップレベルのevalとして望まし >い動作ではないと思います. あれ? eval()の動作ってそうじゃないんでしたっけ? Kernelのprivateメソッ ドを定義しているんでしたっけ? 確認ですが, トップレベルでのselfはmainオブジェクトで良いんですよね? evalは, Kernelの定数とメソッドを定義しているのですか? >問題になるのは > > * メソッド定義した場合どのクラスに定義されるか > * 定数をアクセスした場合どのクラスの定数か > >という点で,現在の実装ではこの二つのクラスは一致するようになっ >ています.これを違えるのは望ましくないと思っていますが,どう >しても必要ならば変えても良いです. うーん. 良く分からん. 多分, eval()の動作が分かっていないに違いない.... >それ以外の点は現在のevalをpublicにすることで解決すると思うの >ですが. # ピンポーンだと思ったのに... PS. CC消さないで下さい. こちらに速達で届きますので(^^;;; __ ..........................................石塚 圭樹@日本ラショナル... ----------------------------------->> e-mail: keiju@bc.mbn.or.jp <<---