Op 31-3-2019 om 03:47 schreef Richard
O'Keefe:
Question 1. Should
that be #asDictionary?
yes, it does.
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?
no, it does not.
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.
yes, I forget the ^ thing
see this code.
directionLooking: aString
self new direction: aString
so I have to think well how to return a instance of a Robot here.
as far as I see I do not have a robot yet.
createDirection: aString position: aCollection
self robot: (Robot directionLooking: aString) yourself.
^ self robot asDictionary
or I overlook something.
Question 5. Are you
sure that 'self robot' returns
what you
think it does? Have you checked?
yes, I checked. self Robot give me a variable robot which is a
Robot.
Question 6. Does
Robot have an #asDictionary method?
Does
Robot have an #asDictonary method?
Yes, it does
Question 7. Why is
"aCollection" not used in this method?
Because I wanted to be sure things are working before I added the
position which is a difficult one.
Question 8. Why are
you using 'yourself'?
I thought I was needed so I get a instance of a Robot back.
Question 9. Why does
the caller want a dictionary instead of
a Robot?
What should be in that dictionary?
The same data as the Robot has but then in a dictionary form.
That is what I try to achieve.
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.
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
|