From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1997-08-20T18:14:45+09:00 Subject: [ruby-dev:195] Re: Class#eval [Re: ftplib.rb revision 1.4] けいじゅ@日本ラショナルです. In [ruby-dev :00194 ] the message: "[ruby-dev:194] Re: Class#eval [Re: ftplib.rb revision 1.4] ", on Aug/20 17:50(JST) matz@netlab.co.jp (Yukihiro Matsumoto) writes: >まつもと ゆきひろです >|> foo.single_eval ... はfooの特異メソッドを定義します >|> Foo.single_eval ... はFooの特異メソッド(クラスメソッド)を定義します >|クラス定数はどうなるんでしょうか? メソッドの定義と同じくなる? > >そうですね.single_evalで定義されたメソッドからしか参照でき >ない定数になると思います. こっちは了解しました. >|> Foo.eval("...", binding) ≡ eval("...", binding) >|うーん. それって, Fooを無視しているわけね. >ええ. ですよねえ... > eval "...", binding >で通常のevalが呼び出せることを念頭に置いてのことです.もとも >とModule#evalとObject#eval(private)の挙動の違いが問題になっ >ていたわけですから. そうですね. >|ローカル変数などのコンテキストはbindingから持ってきて, メソッド定義な >|どはレシーバ(Foo)に行うのが良いんじゃないか? っていいたかったんです. > >まあ,この方がきれいであるのかも知れませんが,実用上あまり重 >要でない機能のためにevalまわりの実装を全書き換えする必要まで >は無い気がするんですねえ. そういう話しになるんですか? よくわからん?? Object#eval(private)の定義はそのままで, Class#evalの動作を上記のように すれば良いと思うのですが? 確認ですが, 現在予定されているeval関連メソッド * Object#eval(private) * Class#eval * Object#single-eval の3種なんですよね? # 何か重大な誤解があるのかな? __ ..........................................石塚 圭樹@日本ラショナル... ----------------------------------->> e-mail: keiju@bc.mbn.or.jp <<---