From: matz@... (Yukihiro Matsumoto) Date: 2003-10-06T15:20:48+09:00 Subject: [ruby-dev:21517] Re: eval BEGIN/END at runtime まつもと ゆきひろです In message "[ruby-dev:21513] Re: eval BEGIN/END at runtime" on 03/10/06, Koji Arai writes: |ちょっと思い出してしまったのですが、以下はかなり昔からなので |すがどういう理由なのでしょう? |# これがわからなくてマニュアルでも不明瞭にしてます |実行されるかどうかわからない END はエラーにしてる? | |eval < -:1: compile error (SyntaxError) | (eval):2: END in method; use at_exit |ruby 1.8.0 (2003-10-05) [i586-linux] 「RubyのENDは実行時に評価される」のがキーです。メソッド内に ENDがあるとそのメソッドが呼ばれた数だけEND procが登録されま す。それは多分意図とは違うでしょう。意図通りならat_exitを使 えばよいことですし。 |思い出しついでにENDのネストが二重までしか許さないのは意図的 |でしょうか? これはバグです。 |ネストした END が最後に回されるのも仕様でしょうか? |なんとなく、35421 を期待したのですがそうじゃないとしても |別に困りませんが。 これも「実行時」の結果です。仕様だと思ってください。