From: Inaba Hiroto Date: 1999-07-30T17:10:19+09:00 Subject: [ruby-dev:7495] Re: constant in class_eval{} 稲葉です. Subject: [ruby-dev:7483] Re: constant in class_eval{} From: matz@netlab.co.jp (Yukihiro Matsumoto) Date: Fri, 30 Jul 1999 10:48:54 +0900 > まつもと ゆきひろです > > In message "[ruby-dev:7479] Re: constant in class_eval{}" > on 99/07/30, Yukihiro Matsumoto writes: > |実際にはブロックの評価中に例外が発生してruby_block中のcbase > |が変更されたままになるのを避けるために PUSH_TAG()/POP_TAG() > |でくくる必要がありそうですね。 > > と、ゆうべ書いておいて、今朝ふと思ったのですが、このcbaseの > 情報はコンパイル時に決まる静的な情報なので変更されたままでいっ > こうに構わないような気がします。 いえ, やっぱりまずいでしょう. Const=10 $p = proc{p Const} $p.call class Foo; Const=1; end Foo.class_eval(&$p) $p.call が 10 1 1 と出力されるようになる気がします. #そういう仕様だ, っていいきっちゃう手もある? -- 稲葉 浩人