Smalltalk (Pharo) methods



我正在尝试学习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

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

最新更新