我的作业有些问题。我的目标是创建代表学生的符号,名称,名称以及他们的预科编号(属性列表)。我也为我创建的所有学生使用了一个全局变量。
我的代码如下所示:
(defun student-create (firstName lastName matr)
(setq newStudent (gensym "studentNr."))
(setf (get 'newStudent 'firstName ) firstName )
(setf (get 'newStudent 'lastName ) lastName)
(setf (get 'newStudent 'matr ) matr)
;(append (list newStudent)*stu-liste*) ;no global list?
)
(student-create 'asdf 'dfgh '132654)
(student-create 'a 'b '123)
(student-create 'c 'd '234)
(student-create 'e 'f '345)
所以这是我想要创建学生的功能。我输入姓名和预科号码。
它适用于符号newStudent,但正如您所看到的,该功能不是那么动态。每次我使用该函数时,newStudent都会被覆盖。 此外,我在保存全局变量中的所有符号时遇到问题。
有人能给我一个暗示吗?
答案 0 :(得分:0)
newStudent
被视为代码中的全局变量,这就是每次调用student-create
时都会覆盖的原因。您应该使用该知识再次思考如何将学生的列表(或任何数据结构)存储到全局变量中。
每次调用函数时,您想要的是student-create
中所需的是对生成的符号的新的本地绑定。您可以使用let
来实现此目的。
实际上,这个家庭作业看起来很像the example for get
in the CLHS ......