On Saturday 26 May 2007 10:02 pm, mstram wrote:
- At least one difference I've found is that I when tried to create a
"class" method that accessed an instance variable, Squeak warned that the variable didn't exist and asked if I wante to create it (is this a bug?) ... even though it was "declared" in the class definition.
Mike,
Think of instantiation and declaration as being like icecream and its récipé. You can make many cups of icecreams from the same récipé. The instance variable (cherry) declared in the class definition (récipé) will be created only when a object of this class is created (icecream pie). You cannot assign to an instance variable in a class method anymore than you can eat cherries from a récipé :-). You 'browse' a récipé and 'inspect' or 'explore' the icecream :-).
This analogy doesn't apply exactly to Squeak. Since classes are also objects that are created when you 'accept' the definition (except that its variables are created from classVariableNames), so you can use them in class methods immediately. Like Bert explained in an earlier mail, use of classVariables is very rare.
Enjoy .. Subbu