yarv-dev:661
From: SASADA Koichi <ko1 atdot.net>
Date: Wed, 05 Oct 2005 18:03:24 +0900
Subject: [yarv-dev:661] Re: environment in eval
ささだです. Yukihiro Matsumoto wrote: > eval実行後フレームをバインディングオブジェクトにコピーするの > でもなんでも構いませんが、これを実現しないと動かないプログラ > ムがかなりあると思いますし、なによりbindingの意味が変化して > しまうと思います。効率は悪くても構いませんからぜひ実現してい > ただきたいです。 http://www.rubyist.net/~matz/20031023.html#p02 > eval内で新規に登場したローカル変数はeval終了後消える これは, 「ただし,その eval 実行時に利用した Binding オブジェクトにはローカル変 数が残る」という付則付き,ということでしょうか.私は「終了後消える.どこ にも残らない」と読んでいました. binding の意味をイマイチわかっていないのですが,どこかに資料などありま すか. もう一つ確認なんですが, b = binding eval('a=1', b) eval('p a', b) # (1) 1 eval('p local_variable', b) # (2) ["a"] であって, eval('a=1') eval('p a') # (1) エラー p local_variables # (2) [] なのでしょうか([yarv-dev:655] Re: environment in eval). eval のバインディングの省略形は,eval(str, binding) の省略形だと思って いたんですが,違うんですね. うまい実装の仕方が思いつかないのですが,考えてみます. まだまだ色々と誤解してそうです.難しい. -- // SASADA Koichi at atdot dot net // -- ML: yarv-dev quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml
654 2005-10-05 15:42 [ko1 atdot.net ] environment in eval 655 2005-10-05 16:01 ┗[matz ruby-lang.org ] 656 2005-10-05 16:15 ┗[ko1 atdot.net ] 657 2005-10-05 16:36 ┗[matz ruby-lang.org ] 658 2005-10-05 16:48 ┗[ko1 atdot.net ] 660 2005-10-05 17:50 ┗[matz ruby-lang.org ] -> 661 2005-10-05 18:03 ┗[ko1 atdot.net ] 662 2005-10-05 18:26 ┗[matz ruby-lang.org ] 663 2005-10-06 11:52 ┗[ko1 atdot.net ] 664 2005-10-07 16:45 ┗[matz ruby-lang.org ] 665 2005-10-07 17:03 ┗[ko1 atdot.net ] 666 2005-10-07 17:15 ┗[usa garbagecollect.j] 667 2005-10-07 17:19 ┗[matz ruby-lang.org ] 668 2005-10-07 20:45 ┣[ko1 atdot.net ] 669 2005-10-07 21:51 ┃┗[shiro lava.net ] 670 2005-10-07 23:34 ┗[nobu.nokada softhome] 671 2005-10-08 00:40 ┗[matz ruby-lang.org ]