【发布时间】:2012-11-08 03:35:04
【问题描述】:
(define-record-type car-ivars
(现场效率(罐中可变气体)))
(定义记录型汽车方法
(现场驾驶!在油箱中加油))
(define refuel (lambda (c g) ((car-methods-refuel c) g)))
(定义get-gas-level
(lambda (c) ((car-methods-get-gas-in-tank c))))
(定义驱动器!
(lambda (c distance) ((car-methods-drive!c) distance)))
(定义制造汽车
(λ(效率)
(let ([car1 (make-car-ivars 效率 0)])
(让([设置气体级别!
(lambda (gas) (car-ivars-gas-in-tank-set!car1 gas))]
【气级
(lambda () ((car-ivars-gas-in-tank car1)))])
(制造汽车方法
;;驾驶!
(λ(距离)
(设置气体水平!
(- (get-gas-level)
(/效率距离)))
;;获取气体水平
(获取气体水平)
;;加油
(λ(气体1)
(设置气体水平!
(+ (get-gas-level) gas1)))))))))
好的,我有这个代码。当我尝试运行我的测试用例
(定义混合动力(制造汽车 50))我得到一个
异常:#procedure 构造函数的参数数量不正确错误。而且我不太确定它来自哪里。
【问题讨论】:
-
知道您正在使用哪种方案实现会非常有用。
-
塞巴斯蒂安的观点很好。我还认为我们没有足够的代码来说明问题。我怀疑这个错误实际上是在 make-car-ivars 或 make-car-methods 中产生的,但这纯粹是推测,没有更多数据。
标签: scheme