目前,作为作业的一部分,我正在尝试编写一个方案程序,该程序接受 3 条消息'get-student-average
'get-assignment-average
和'add-grade
,并根据需要返回信息。'add-grade
基本上给出了按顺序插入的学生 ID、作业和成绩。我仍在处理学生和作业的平均消息(因此在它们前面有分号),但是当我尝试运行它时一直失败的是'add-grade
消息。它一直说成绩是一个未绑定的变量。这是我正在测试它的代码:
(define (make-grades)
(define T '())
(define (dispatch op)
((eq? op 'add-grade) (lambda(id as gr) (set! T (append T (list (list id as gr)
)))))
;((eq? op 'get-student-average) (lambda(x) ( )))
;((eq? op 'get-assignment-average)
))
(define grades (make-grades))
((grades 'add-grade) 7 1 85))
我不确定我做错了什么,试图用它来取回信息。我认为,与方案中的表一样,诀窍是将列表作为列表附加到空值,然后设置它。
还有很多其他测试用例(包括一些用于'average
消息的测试用例),但我没有包括它们,因为我觉得它只是在重复更多相同的东西。我觉得我应该提到的另一件事是所有测试用例都放在一个列表中,以 . 开头'(
和结尾)
。