From: ts Date: 2000-10-24T00:45:10+09:00 Subject: [ruby-talk:5795] Re: local variables (nested, in-block, parameters, etc.) >>>>> "G" == Guy N Hurst writes: G> I can see you are much more advanced than I, and know the source well. I know nothing, I just ask ruby what it do. You'll see : pigeon% cat b.rb #!./ruby require 'ii' dump b = 2 p "#{b}" [[3, 4]].each do |b| p "#{a} -- #{b}" end p "#{b}" pigeon% pigeon% b.rb eval_tree BLOCK NEWLINE <./b.rb:2> FCALL require ARRAY STR "ii" NEWLINE <./b.rb:3> VCALL dump NEWLINE <./b.rb:4> LASGN b LIT 2 NEWLINE <./b.rb:5> FCALL p ARRAY DSTR "" . "b" . NEWLINE <./b.rb:6> ITER nd_iter CALL each ARRAY ARRAY LIT 3 LIT 4 () nd_var MASGN ARRAY DASGN_CURR a LASGN b nd_body NEWLINE <./b.rb:7> FCALL p ARRAY DSTR "" . "a" . " -- " . "b" . NEWLINE <./b.rb:9> FCALL p ARRAY DSTR "" . "b" . "2" "3 -- 4" "4" pigeon% and : pigeon% cat b.rb #!./ruby require 'ii' dump def toto(a) p "1 #{a}" do(a = a, b = 2) p "2 #{a}, #{b}" do a = a + 2, b = a + 10 p "3 #{a}, #{b}" end p "4 #{a}, #{b}" end p "5 #{a}" end pigeon% pigeon% b.rb eval_tree BLOCK NEWLINE <./b.rb:2> FCALL require ARRAY STR "ii" NEWLINE <./b.rb:3> VCALL dump NEWLINE <./b.rb:4> DEFN toto SCOPE BLOCK ARGS (a) NEWLINE <./b.rb:5> FCALL p ARRAY DSTR "1 " . "a" . NEWLINE <./b.rb:12> DO BLOCK DASGN_CURR a LVAR a DASGN_CURR b LIT 2 BLOCK NEWLINE <./b.rb:7> FCALL p ARRAY DSTR "2 " . "a" . ", " . "b" . NEWLINE <./b.rb:10> DO BLOCK DASGN_CURR a CALL + DVAR2 a ARRAY LIT 2 DASGN_CURR b CALL + DVAR2 a ARRAY LIT 10 NEWLINE <./b.rb:9> FCALL p ARRAY DSTR "3 " . "a" . ", " . "b" . NEWLINE <./b.rb:11> FCALL p ARRAY DSTR "4 " . "a" . ", " . "b" . NEWLINE <./b.rb:13> FCALL p ARRAY DSTR "5 " . "a" . pigeon% Guy Decoux p.s. : if you are interested, the extension 'ii' is in fl.tar.gz