From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1997-08-12T02:19:15+09:00 Subject: [ruby-dev:99] Re: meta programming features けいじゅ@日本ラショナルです. In [ruby-dev :00097 ] the message: "[ruby-dev:97] Re: meta programming features ", on Aug/11 17:33(JST) matz@netlab.co.jp (Yukihiro Matsumoto) writes: >flavorsねえ.自分で言い出しといてなんですが,あんまり良い名 >前じゃないですねえ. おぉ.... それは困った... どうしようかなあ... 誰かいい名前思い浮かびま せんかぁ?? >ああ,インスタンス変数のことを忘れていた,すいません. そうでしたか... 良かった, 私の思い違いじゃなくて(^^;;;; >うーん,どうしよう.良い名前の提案があれば採用ということでど >うです? じゃあ. 考えましょう!! と. 思ったんですが... evalとObject#eval(仮称)は非常に似ているんですよ ね... というのも:: 1. トップレベルにおいて. eval()をトップレベルで行うのは, Object#eval()をトップレベルで行ってい るのと同じメソッドになりますよね. つまり, mainオブジェクトに対する Object#eval()とeval()は(このレベルに限れば)同じことを行っていません?? 2. あるモジュールクラス内で. この場合, eval()は Module#evalと同じになっていますよね? つまり, class Foo def foo eval "def bar..." end end はFooクラスのメソッド定義になっていますので, Foo.eval "def foo..." と全く同じ働きをしていますよね? つまり, class Foo def foo Foo.eval "def foo.." # or self.type.eval "def foo..." end end と最初のケースは同じです. こうやって考えると, evalは, 上記2つの条件で働きが違っているんですよね... 私の提案は, eval()は Object#eval()と同じ働きにし, 第2のケースを直接サ ポートすることはやめて, 同じメソッドをモジュールに適用する Module#eval() で代用するのがいいんじゃないかと思います. # 第2のケースのeval()は私の提案だと思ったのですが... 経験が少なかった # ということで許して下さい(__;;;; まだ, 使っている人が少ないと思うので # へいきでしょう(^^;;;;;; いかがでしょう? __ ..........................................石塚 圭樹@日本ラショナル... ----------------------------------->> e-mail: keiju@bc.mbn.or.jp <<---