Hi,
In message "[ruby-talk:5799] Re: local variables (nested, in-block, parameters, etc.)"
on 00/10/24, "Guy N. Hurst" <gnhurst / hurstlinks.com> writes:
|I think it would also be important to have the ability to specify *all*
|local variables somehow (maybe to avoid long lists or to avoid having to
|know names).
|
|Some means of determining what happens when a variable is on both sides
|needs to be considered: <a,b; x,b>. Maybe default it to mean that 'b'
|is a block local initialized to local var 'b'. Maybe it should mean
|the local var should be bound to the block var. Maybe...
I would make this an error.
|> Plus, if compatibility problem would not be so critical, || block
|> parameters might NOT be in-block vars even if they are NOT seen before
|> the block. Note I've not decided anything yet. We still need discussions.
|
|So, does this amount to it *creating* a local var to bind to if no local
|var already exists? GREAT idea. And I don't think it would cause much
|incompatibility since if no local var was seen, then it probably isn't
|used later, either (or if it is, is probably initialized). The only
|other thing I can think of is if they are using a method by the same
|name; they will suddenly get a different result if they use the special
|shortcut for the method without parentheses or parameters...
Compatibility problem will arise for the programs that use in-block
variables as {thread,lambda}-local variables. I think I can avoid
(well, at least for most of the cases) this problem with additional
rules. I'm not sure whether the additional rules, which will make
Ruby more complex, is worth it or not yet.
|I don't quite understand about explicit declaration - what it consists
|of and why it is avoided.
I want to avoid SEARCHING declaration to determine variable types and
scopes. This is one of the source of readability of Ruby. I still
have to consider how bad THIS explicit declaration is.
matz.