Hi,

In message "[ruby-talk:5617] Re: local variables (nested, in-block, parameters, etc.)"
    on 00/10/17, "Brian F. Feldman" <green / FreeBSD.org> writes:

|Oh well.  It doesn't seem like there is a compelling reason to not make 
|variables automatically localized to the block.  What's useful would be a 
|local variable but non-parameter syntax, a way to be sure that if you see 
|only this little bit of code that you know it won't reach outside of its 
|bounds.  But inheriting variables in the _arguments_ to a block is just 
|inconsistent, and it should be no question of whether or not there should be 
|a syntax to allow both...

I'm afraid I don't get it right.  You proposed:

  * all block parameters should be local to the block
  * a way to declare block local variable explicitly would be good

Right?

Let me summarize the current proposals (and possible solution):

  (a) block parameters should be local to the block
  (b) block parameters and explicitly declared local variables should
      be local to the block
  (c) block parameters using new form should be local to the block
      (<a,b> or |a~, b~|)
  (d) block parameters using new form and explicitly declared local
      variables should be local to the block

Proposal a and b have incompatibility.  I'm not sure it's worth it.
In addition, I felt code like the following is useful and already
there.

  i = nil
  [1,2,3].each{|i| break if condition(i)}
  p i

Of course, rewriting it to

  x = nil
  [1,2,3].each{|i| if condition(i)
      x = i
      break
    end
  }
  p x

is easy, but tiresome.  Yes, I'm lazy.

							matz.