From: matz@... (Yukihiro Matsumoto) Date: 1997-08-22T13:06:58+09:00 Subject: [ruby-dev:209] Re: Class#eval [Re: ftplib.rb revision 1.4] まつもと ゆきひろです In message "[ruby-dev:207] Re: Class#eval [Re: ftplib.rb revision 1.4]" on 97/08/22, 石塚圭樹 writes: |けいじゅ@日本ラショナルです. |>こっちは良いんですよ.コストだけでメリットがはっきりしてます |>から.Module#evalとかModule#includeなどはコストが掛かるし, |>メリットもはっきりしないんでふんぎりがつかないんですよね. | |そうですねえ... メリットの問題もありますけどね. | |# evalを大幅に直すとバグがまた大量発生したりして(^^;;; それも恐いですし,それにもともとの目的である「eval関数と互換 の機能を呼び出したい」が実現できないと意味が無いので. |現状だと, Class#evalは | |* レシーバの指定がないとObject#evalと同じ動作 |* レシーバの指定があってbindingがないと, レシーバへの登録 |* レシーバの指定があってbindingがあると, Object#evalと同じ動作 | |になっているんですね? 違います. * bindingがないと, モジュールのコンテキストでeval * bindingがあると, Object#evalと同じ動作 です.前にも行ったように現状のrubyではレシーバの指定があるか ないかで挙動を変えることは出来ません.privateにすることは出 来ますけど. |いっそのこと, 名前を変えた方がいいのかな? | |Object#eval(source, binding) |Class#class_eval(source) |Object#single_eval(source) | |と. まあ,それが一番確実な手なんですけど.いろいろ考えて決めるこ とにしましょう. まつもと ゆきひろ /:|)