[Newbies] invoking a *class* method from a workspace

Bert Freudenberg bert at freudenbergs.de
Sat May 26 16:40:45 UTC 2007


On May 26, 2007, at 18:32 , mstram wrote:

>
> Well obviously I need to a lot more reading and experimenting with  
> this,
> even if  "class" methods are "regular" methods, there is something  
> different
> with them as far as :
>
> 1) the syntax to access them  ("fire" .. "call" .. "invoke" ???  
> what is the
> traditional term ? )


There is no special syntax. The only difference is the receiver.  
Either you send a message to an instance of a class or or the class  
itself (which, as mentioned before, is a regular object).

> 2) At least one difference I've found is that I when tried to create a
> "class" method that accessed an instance variable,

Instance variables are private, they can only be accessed by the  
object itself. So from the class object you cannot access instance  
variables of one of its instances.

> 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.
> [...]
> But Squeak says that 'ivar1' is undeclared and asks if I want to  
> declare it.
> It accepts it being declared as an instance variable (even though  
> it already
> was according to the class definition ... (is this a bug?).

No, what you did there is you defined 'ivar1' as an instance variable  
of the class object itself, not for instances of your class. It will  
be listed in the browser when you switch to the class side  
definition. This feature is very rarely used.

- Bert -




More information about the Beginners mailing list