试图从 OrderedCollection 中检索元素
trying to retrieve element from an OrderedCollection
我正在使用 pharo
。我有一个 Car
class 有一个 speed
变量和 class 副方法 withSpeed: aSpeed
设置 speed := aSpeed.
我正在操场上尝试以下测试。
car := Car withSpeed: 20.
cars := OrderedCollection new.
cars add: car.
现在,我在 cars
集合中有一个 car
。
我想买有 speed = 20
的车 我正在尝试以下代码,但它给我错误:
result := cars select: [ :each | each withSpeed: 20. ].
知道出了什么问题吗?
鉴于您的 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.
您的错误可能是由于 #withSpeed
是在 class-side 上定义的,但您将其发送到实例。这是新用户的常见陷阱,在 Pharo By Example(第 5.3 节)中有很好的说明。
虽然这可能根本不是问题,因为您对错误的描述太含糊了。接下来,复制调试器 window 标题和调用链的任何相关部分,您将获得更好的答案!
我正在使用 pharo
。我有一个 Car
class 有一个 speed
变量和 class 副方法 withSpeed: aSpeed
设置 speed := aSpeed.
我正在操场上尝试以下测试。
car := Car withSpeed: 20.
cars := OrderedCollection new.
cars add: car.
现在,我在 cars
集合中有一个 car
。
我想买有 speed = 20
的车 我正在尝试以下代码,但它给我错误:
result := cars select: [ :each | each withSpeed: 20. ].
知道出了什么问题吗?
鉴于您的 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.
您的错误可能是由于 #withSpeed
是在 class-side 上定义的,但您将其发送到实例。这是新用户的常见陷阱,在 Pharo By Example(第 5.3 节)中有很好的说明。
虽然这可能根本不是问题,因为您对错误的描述太含糊了。接下来,复制调试器 window 标题和调用链的任何相关部分,您将获得更好的答案!