Question 1. Should that be #asDictionary? Question 2. If not, what's a Dictonary? Question 3. I see you are using self-encapsulation, with a getter 'self robot' and a setter 'self robot: something'. Of course that means that outside code can freely smash your "robot" property, unless #robot: checks that its argument makes sense. Does it? Question 4. What kind of thing *is* "robot". Have you checked that 'Robot directionLooking: ...' returns an instance of Robot? If you accidentally omitted '^' it might return the Robot class itself. Question 5. Are you sure that 'self robot' returns what you think it does? Have you checked? Question 6. Does Robot have an #asDictionary method? Does Robot have an #asDictonary method? Question 7. Why is "aCollection" not used in this method? Question 8. Why are you using 'yourself'? Question 9. Why does the caller want a dictionary instead of a Robot? What should be in that dictionary?
There are more questions but those will do to be going on with. If your #robot: method began like robot: aRobot (aRobot isKindOf: Robot) ifFalse: [aRobot error: 'not an instance of Robot']. you would have caught what I suspect is your problem. Check question 4. On Sun, 31 Mar 2019 at 07:19, Roelof Wobben <r.wob...@home.nl> wrote: > Hello, > > Im busy with a new challenge from exercism. > Where I have to keep track of a robot , where it facing and on that > coordinate the robot is. > > so I made this function what the test wanted > > createDirection: aString position: aCollection > self robot: (Robot directionLooking: aString) yourself. > ^ self robot asDictonary > > I can see that on the first part a new robot is made with the right data. > but the test wants the data back as a Dictonary > that is why I made the self robot asDictonary line > > but to my suprise the compiler wants it be a class method where I expect > it to be a instance method. > > Can someone explain to my why this is ? > > Roelof > > >