yarv-dev:656
From: SASADA Koichi <ko1 atdot.net>
Date: Wed, 05 Oct 2005 16:15:18 +0900
Subject: [yarv-dev:656] Re: environment in eval
ささだです. Yukihiro Matsumoto wrote: > |b = binding > |loop{ > | print "> " > | ans = eval("b=binding; #{gets}") > | puts "ans: #{ans} > |} > > この例はよくわからなかったのですが > > b = binding > loop{ > print "> " > ans = eval("#{gets}", b) > puts "ans: #{ans}" > } b = binding loop{ print "> " ans = eval("b=binding; #{gets}", b) puts "ans: #{ans}" } というプログラムでした.eval を行うごとに,毎回 binding が作られるので, eval 実行環境の binding を次の eval で使うことで,ローカル変数なども引き 継ぐことができます. (とするつもりなんですが,YARV で今やったら segv しました orz) -- // 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 ]