From: matz@... (Yukihiro Matsumoto) Date: 2003-10-06T15:54:08+09:00 Subject: [ruby-dev:21520] Re: eval BEGIN/END at runtime まつもと ゆきひろです In message "[ruby-dev:21519] Re: eval BEGIN/END at runtime" on 03/10/06, Koji Arai writes: |> 「RubyのENDは実行時に評価される」のがキーです。メソッド内に |> ENDがあるとそのメソッドが呼ばれた数だけEND procが登録されま |> す。それは多分意図とは違うでしょう。意図通りならat_exitを使 |> えばよいことですし。 | |となると eval じゃない場合に許される理由はなんでしょう? あ、これはバグっぽいかも。 |END の登録を1回きりにする保証が取れない場合にエラーにしたい |なら、以下をこそ禁止すべきな気もしますし。まだよくわかりませ |ん。 |# 自分の首を絞めるのを止めてくれるのは ruby らしいのか、らし |# くないのか。 | |def foo | eval 'END { p "foo" }' |end evalを使った場合にはチェックがないのはそういうものです。 evalを使う人はそれくらい責任を持ちなさいというか。 |さらに言うと END の登録を実行時にした理由も知りたい気がしま |すが、教えて君が過ぎますでしょうか?(^^; parse時の実行は避けたかったのです。現状ではさほど問題ありま せんが、将来のバージョンではコンパイルと実行が完全に分離され るかもしれませんし。 |# 休みを取るとうるさくて困りますね。私てば(汗 お休みでしたか。