From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1997-08-22T12:28:54+09:00 Subject: [ruby-dev:207] Re: Class#eval [Re: ftplib.rb revision 1.4] けいじゅ@日本ラショナルです. In [ruby-dev :00200 ] the message: "[ruby-dev:200] Re: Class#eval [Re: ftplib.rb revision 1.4] ", on Aug/20 19:49(JST) matz@netlab.co.jp (Yukihiro Matsumoto) writes: >まつもと ゆきひろです >|>まあ,この方がきれいであるのかも知れませんが,実用上あまり重 >|>要でない機能のためにevalまわりの実装を全書き換えする必要まで >|>は無い気がするんですねえ. >| >|そういう話しになるんですか? よくわからん?? >そういう実装にするためにはeval(群)を実装している関数eval()を >全面的に書き換えないといけないんですよ.そういうbindingから >持って来たものと外から指定するものを混ぜる処理はサポートして >いないんで. なるほど... >|確認ですが, 現在予定されているeval関連メソッド >| >|* Object#eval(private) >|* Class#eval >|* Object#single-eval >| >|の3種なんですよね? > >ええ.そうです. (どっかのメイル) >こっちは良いんですよ.コストだけでメリットがはっきりしてます >から.Module#evalとかModule#includeなどはコストが掛かるし, >メリットもはっきりしないんでふんぎりがつかないんですよね. そうですねえ... メリットの問題もありますけどね. # evalを大幅に直すとバグがまた大量発生したりして(^^;;; 現状だと, Class#evalは * レシーバの指定がないとObject#evalと同じ動作 * レシーバの指定があってbindingがないと, レシーバへの登録 * レシーバの指定があってbindingがあると, Object#evalと同じ動作 になっているんですね? Class#evalでbindingの指定ができなくするというのも問題ですかねえ... いっそのこと, 名前を変えた方がいいのかな? Object#eval(source, binding) Class#class_eval(source) Object#single_eval(source) と. __ ..........................................石塚 圭樹@日本ラショナル... ----------------------------------->> e-mail: keiju@bc.mbn.or.jp <<---