From: matz@... (Yukihiro Matsumoto) Date: 1997-03-19T18:02:00+09:00 Subject: [ruby-list:2388] eval()'s context まつもと ゆきひろです. evalの中でクラス定義やメソッド定義をした場合,トップレベルに 定義されてしまうことに気がついていた人はいますか? また,それを利用している人はいますか? 実は eval() のコンテキストを静的なコンテキストに近づけること を計画しています.つまり,evalは引数の文字列がその場所にあっ たのと同じ(あるいは近い)働きをするようにしようということです. この変更によって class Foo eval "def bar(); 25; end" def foo eval "def baz(); 44; end" end end のようなコードでevalが評価されると 現在: Object#bar, Object#bazがprivateで定義される 将来: Foo#bar, Foo#bazがpublicで定義される になります.この変更によってメソッドの中からトップレベルの関 数メソッドを定義することが難しくなります(bindingを使えば可能). この変更に対して異義を申し立てる人がいますか? まつもと ゆきひろ /:|)