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.wobben@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