我正在使用pharo
。我有一个Car
类,其中有一个speed
变量,另一个方法withSpeed: aSpeed
设置了speed := aSpeed.
我正在操场上尝试以下测试。
car := Car withSpeed: 20.
cars := OrderedCollection new.
cars add: car.
现在,car
内有cars
个集合。
我想要获得speed = 20
的汽车我正在尝试以下代码,但它给了我错误:
result := cars select: [ :each | each withSpeed: 20. ].
知道出了什么问题吗?
答案 0 :(得分:4)
鉴于您的Car
有speed
的访问者,您只需
result := cars select: [ :each | each speed = 20. ].
这可以让你拥有速度为20
的所有汽车。如果您只需要一个,则应使用detect:
myCar := cars detect: [ :each | each speed = 20. ].
实例变量的访问者(此处speed
)通常看起来像
Car>>speed
^ speed
和
Car>>speed: anObject
speed := anObject.
答案 1 :(得分:4)
您的错误可能是由于#withSpeed
在类端定义,但您将其发送到实例。这是新用户的常见陷阱,并在Pharo By Example中得到了很好的阐述(第5.3节)。
虽然这可能不是问题,因为您对错误的描述太模糊了。继续,复制调试器窗口标题和调用链的任何相关部分,你会得到更好的答案!