[ruby-talk:02507] Re: Variable scope -does this make sense?

From: Dave Thomas <Dave@...>
Date: 2000-04-18 20:30:10 UTC
List: ruby-talk #2507
schneik@us.ibm.com writes:

> #      Global variables are available throughout an
> #      application.

> I think "a program" would be better than "an application",

True - I was trying to vary the wording a bit, but you're right that
application is incorrect.

> #      Instance variables are available throughout a class
> #      body. Reference to an uninitialized instance variable returns
> #      nil.
> 
> I think the word "scope" somehow wants to be used here instead of "are
> available".

Normally I'd agree, but this section is entitled "Scope of Variables", 
so I was trying hard (and failing later on) not to define scope in
terms of scope.


> Do you (also) mean/want to say/imply: "Instance variables
> are local to a class body."?

Help me out here. I'm not sure...

> Does an "unitialized instance variable"
> actually exist prior to or after a reference to it?

Actually I think an instance variable _can_ exist prior to being
referenced or assigned, although I think that's probably not useful
knowledge.

   attr :fred

Actually creates the instance variable from the symbol.


> 
> #      Local variables are unique as their scopes are statically
> #      determined, but their existence is established dynamically.
> #
> #      A local variable is created when it is first assigned to during
> #      program execution.
> 
> Consider something like "Local variables are created dynamically when
> first assigned to during program execution.  However the scope of
> local variables is determined statically (so independent versions of
> local variables with identical names may exist in different scopes)."
> 

> #      Method parameters and block parameters are considered to be local
> #      variables, and are assigned to when the method or block is
> #      invoked.
> 
> Can "considered to be" be considered to be unnecessary here, or is
> there a more subtle distinction here?

That's a good question. Matz?

> #      values of these variables when it executes. The binding ensures
> #      that these variable will continue to exist even if the original
> #      enclosing scope is destroyed.
> 
> How about "The binding preserves these variable[s], even if...."?

Better. Thanks.

> #      \KW{while}, \KW{until}, and \KW{for} loops are built in to the
> #      language and do not introduce new scope; previously existing
> #      locals can be used in the loop, and any new locals created will
> #      be available afterwards.
> 
> This seems a superfluous distraction: "are built in to the language
> and".  Instead of describing this negatively, I would just say that
> they are part of the enclosing scope.

Also good.

Many thanks for taking the trouble to plow through it.


Dave

In This Thread

Prev Next