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.