Smalltalk (Pharo) 方法

Smalltalk (Pharo) methods

我正在尝试学习 Smalltalk (Pharo),但由于可用的文档不多,我想寻求一些帮助。 我有两个 classes,CarRental 和 Car,还有一个测试 class,CarRentalTest。 现在,支持租车服务有固定数量的汽车。

| carRental |
carRental := CarRental new.
carRental
    addCar: Car panda;
    addCar: Car panda;
    addCar: Car tesla.
self assert: carRental totalCars size = 3

但是,我的 addCar 方法是红色的,我该如何解决?

有很多可用于 pharo 的文档:

这里有一些提示:

现在,关于你的问题,很难有答案,这取决于很多事情,例如:容器是 Set 还是 OrderedCollection? Car panda 回答了什么? Car 的新实例还是始终相同?

你的方法 addCar: 是红色的(注意末尾的冒号),因为你还没有定义它。那就记下来吧:

class CarRental 必须有一个实例变量来保存它的所有汽车。假设我们将其命名为 cars.

initialize方法中(实例端)我们需要做如下操作

CarRental >> initialize
  super initialize.
  cars := OrderedCollection new.

现在,如果我们创建一个 CarRental 的新实例,它将在其 cars ivar 中有一个空的 OrderedCollection

现在我们可以像这样添加addCar:方法

CarRental >> addCar: aCar
  cars add: aCar

最后,确保你有这样的东西

CarRental >> totalCars
  ^cars size

检查您的代码并继续尝试!