2

我正在使用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. ].  

知道出了什么问题吗?

4

2 回答 2

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.
于 2015-05-19T09:00:35.747 回答
4

#withSpeed您的错误可能是由于在类端定义的事实,但您将其发送到实例。这是新用户的常见陷阱,Pharo By Example(第 5.3 节)很好地阐明了这一点。

尽管这可能根本不是问题,因为您对错误的描述太模糊了。接下来,复制调试器窗口标题和调用链的任何相关部分,您将获得更好的答案!

于 2015-05-19T12:07:10.637 回答