我正在尝试学习Smalltalk(Pharo),但由于可用的文档不多,我想寻求一些帮助。我有两个类,CarRental和Car,以及一个测试类,CarRentalTest。现在,配套租赁服务已经固定了汽车。
| carRental |
carRental := CarRental new.
carRental
addCar: Car panda;
addCar: Car panda;
addCar: Car tesla.
self assert: carRental totalCars size = 3
但是,我的addCar方法是红色的,我该如何解决?
有很多关于 Pharo 的文档:
这里有一些提示:
- http://books.pharo.org(我建议从"Pharo by Example"开始)
- http://mooc.pharo.org
- 这个优秀的列表:https://www.youtube.com/watch?v=0xF4fnGaE2w&list=PLqbtQ7OkSta0ULYAd7Qdxof851ybh-m(基于旧版本的Pharo,但一切都适用)。
现在,关于你的问题,很难有一个答案,这取决于很多事情,例如:容器是集合还是有序集合? Car panda
回答什么?汽车的新实例还是总是一样?
您的方法addCar:
是红色的(请注意末尾的冒号),因为您尚未定义它。 那我们来写下来吧:
类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
查看您的代码并继续尝试!