首页 > 解决方案 > Pharo 中的方法

问题描述

我还在学习Pharo,但有点混乱。有两个类,CarRentalCar,和一个Test类,CarRentalTest

有固定数量的车,同一辆车不能租两次,我有代码,但有错误。

| carRental redPanda yellowPanda blackTesla |
    carRental := CarRental new.
    redPanda := Car panda.
    yellowPanda := Car panda.
    blackTesla := Car tesla.
    carRental
        addCar: redPanda;
        addCar: yellowPanda;
        addCar: blackTesla.
    self assert: carRental availableCars size equals: 3.
    carRental rent: redPanda days: 5.
    self assert: carRental availableCars size equals: 2.
    self assert: carRental rentedCars size equals: 1

我尝试初始化availableCarsandrentedCard方法,但仍然存在问题。

标签: smalltalkpharo

解决方案


您需要跟踪租来的汽车,对吗?为此,将 ivar 添加rentedCarRental类并将其初始化为空集合:

rented := OrderedCollection new.

(换句话说,在#initialize方法 - 实例端包含上面的行。)

现在,每次您租车时都将其添加到rented集合中:

rent: aCar
  rented add: aCar

以及何时还车

return: aCar
  rented remove: aCar

您还可以添加到目前为止缺少的 getter 方法

rentedCars
  ^rented

并将可供出租的汽车计算为

availableCars
  ^cars copyWithoutAll: rented

推荐阅读