Smalltalk 尝试从OrderedCollection检索元素
我正在使用Smalltalk 尝试从OrderedCollection检索元素,smalltalk,pharo,squeak,gnu-smalltalk,Smalltalk,Pharo,Squeak,Gnu Smalltalk,我正在使用pharo。我有一个Car类,它有一个speed变量,还有一个class-side方法withSpeed:aSpeed它设置speed:=aSpeed. 我正在操场上做下面的测试 car := Car withSpeed: 20. cars := OrderedCollection new. cars add: car. 现在,我有一辆car车内cars收藏 我想买一辆速度为20的车,我正在尝试以下代码,但它给了我错误: result := cars select: [ :each
pharo
。我有一个Car
类,它有一个speed
变量,还有一个class-side方法withSpeed:aSpeed
它设置speed:=aSpeed.
我正在操场上做下面的测试
car := Car withSpeed: 20.
cars := OrderedCollection new.
cars add: car.
现在,我有一辆car
车内cars
收藏
我想买一辆速度为20的车,我正在尝试以下代码,但它给了我错误:
result := cars select: [ :each | each withSpeed: 20. ].
你知道出了什么问题吗?鉴于你的
汽车
有一个速度存取器,你只需
result := cars select: [ :each | each speed = 20. ].
这将使您获得所有速度20
的车辆。如果只需要一个,则应使用detect:
myCar := cars detect: [ :each | each speed = 20. ].
实例变量的访问器(此处为
speed
)通常如下所示
Car>>speed
^ speed
及
您的错误可能是由于在类端定义了
#with speed
,但您正在将其发送到实例。这是新用户的一个常见陷阱,在(第5.3节)中得到了很好的澄清
虽然这可能根本不是问题,因为您对错误的描述太模糊了。接下来,复制调试器窗口标题和调用链的任何相关部分,您将得到更好的答案 可能使用
#detect:ifNone:
来捕获集合中没有此类元素的情况。是的,这样更好。谢谢你,麦克斯
Car>>speed: anObject
speed := anObject.