smalltalk - Pharo 中的方法
问题描述
我还在学习Pharo,但有点混乱。有两个类,CarRental
和Car
,和一个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
我尝试初始化availableCars
andrentedCard
方法,但仍然存在问题。
解决方案
您需要跟踪租来的汽车,对吗?为此,将 ivar 添加rented
到CarRental
类并将其初始化为空集合:
rented := OrderedCollection new.
(换句话说,在#initialize
方法 - 实例端包含上面的行。)
现在,每次您租车时都将其添加到rented
集合中:
rent: aCar
rented add: aCar
以及何时还车
return: aCar
rented remove: aCar
您还可以添加到目前为止缺少的 getter 方法
rentedCars
^rented
并将可供出租的汽车计算为
availableCars
^cars copyWithoutAll: rented
推荐阅读
- javascript - 如何为通用应用程序配置 webpack 反应
- docker - 从 tomcat docker 容器收集 tomcat 日志到 Filebeat docker 容器
- dns - 我可以将域映射到另一个子域吗?
- apache-kafka - 基于消费者滞后的Kafka节流生产者
- spring - 查询字段最大的文档
- youtube-data-api - youtube pubsubhubbub 通知延迟
- c++ - 如何从文本文件中填充指针数组?
- jsf - f:ajax 渲染引用迭代组件
- angular - 具有可变项目高度的 cdk-virtual-scroll-viewport
- c - mDNS 导致在 esp8266 上重新启动