Hi,
In message "[ruby-talk:5818] Re: local variables (nested, in-block, parameters, etc.)"
on 00/10/24, ts <decoux / moulon.inra.fr> 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.