From: Dave Thomas Date: 2000-04-18T15:30:10-05:00 Subject: [ruby-talk:02507] Re: Variable scope -does this make sense? 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