Пытается извлечь элемент из коллекции OrderedCollection
Я использую 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. ].
Есть идеи, что не так?
2 ответа
Учитывая, что ваш 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
определяется на стороне класса, но вы отправляете его экземплярам. Это обычная ловушка для новых пользователей, которая хорошо разъясняется в Pharo By Example (раздел 5.3).
Хотя это может и не быть проблемой, потому что ваше описание ошибки слишком расплывчато. В дальнейшем скопируйте заголовок окна отладчика и любую соответствующую часть цепочки вызовов, и вы получите лучшие ответы!