From: Koji Arai Date: 2003-10-06T16:15:12+09:00 Subject: [ruby-dev:21522] Re: eval BEGIN/END at runtime 新井です。 In message "[ruby-dev:21520] Re: eval BEGIN/END at runtime" on 06 Oct 2003 15:54:08 +0900, matz@ruby-lang.org (Yukihiro Matsumoto) wrote: > まつもと ゆきひろです > > 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 じゃない場合に許される理由はなんでしょう? > > あ、これはバグっぽいかも。 うむむ、それがバグならこれもバグ?しかし parse 時に検出できない とかそんな理由でしょうかね。 5.times {|i| END {print i} } => 0 > |# 自分の首を絞めるのを止めてくれるのは ruby らしいのか、らし > |# くないのか。 らしくないに一票と言いたい。 「ある END が一回しか登録されないことは保証されている」とい う仕様は納得できますが、メソッドの定義時だけエラーになるのは 納得しにくい。 # ぶっちゃけマニュアル書きにくい!(それが理由か! > お休みでしたか。 サ○リとも言います。危険すぎるので伏せ字。 -- 新井康司 (Koji Arai)