From: matz@... (Yukihiro Matsumoto) Date: 2000-10-25T00:59:20+09:00 Subject: [ruby-talk:5819] Re: local variables (nested, in-block, parameters, etc.) Hi, In message "[ruby-talk:5818] Re: local variables (nested, in-block, parameters, etc.)" on 00/10/24, ts writes: |G> So, does this amount to it *creating* a local var to bind to if no local |G> var already exists? GREAT idea. And I don't think it would cause much |G> incompatibility since if no local var was seen, then it probably isn't |G> used later, either (or if it is, is probably initialized). The only | | It break some closure, for example in test.rb | | eval "(0..9).each{|i5| $x[i5] = proc{i5*2}}", x | test_ok($x[4].call == 8) I'm thinking of adding a new rule that the scope of a new block parameter (|| variable) is extended if it is referred out of the block. So i5 in > eval "(0..9).each{|i5| $x[i5] = proc{i5*2}}", x > test_ok($x[4].call == 8) will be in-block variable (as is now). But i6 in [1,2,3].each{|i6| break if i6 % 2 == 0} p i6 # referred out of a block will be a plain local variable. How do you think? Too complicated? matz.