[Newbies] tutorial: "doesNotUnderstand" instance variable

Andrew n marshall Andrew.n.marshall at mail.com
Wed Nov 14 15:38:42 UTC 2007



Cédrick Béler wrote:
> The error message says that #existSides: doesn't exist. So either you 
> create it (the accessor) or you directly affect the instance variable.
>
> BlankCell>>existSide: aDictionary
>        existSide := aDictionary
>
> or you replace in you initialize method "self exitSides: Dictionary" 
> new by:
> existSide := Dictionary new

Where are you getting "existSides"?  Everything I see in the stack 
screen shot and in my email says "exitSides"?



I'm going to assume that was a mistake, and you're suggesting the same 
thing Karl mentioned.

If I do this, it "doesNotUnderstand" the following line.  But I see the 
var is set, so I remove self from all the following lines.  The accessor 
complains similarly, and I remove self from it also.

It works, but I'm confused and concerned now.  Why does the tutorial ( 
http://squeak.preeminent.org/tut2007/html/021.html ) recommend the other 
form, and why does that form work for activeSegments (my other instance 
variable, which is also a Dictionary) but not exitSides:

initializeActiveSegments
    self activeSegments: Dictionary new.
    self activeSegments at: #north put: false.
    self activeSegments at: #east put: false.
    self activeSegments at: #south put: false.
    self activeSegments at: #west put: false.

In my mind, I now have two instance variables of Dictionarys that I have 
to initialize and reference in different ways.

I just realized activeSegments has an accessor / mutator pair.  So, is 
this an omission of the tutorial, forgetting to mention the those 
methods?  Am I correct in concluding methods calls are always prefixed 
by the class instance variable name (in this case "self) while instance 
variables of self are referenced directly?


More information about the Beginners mailing list