Filling CDs(录入 CD)
只有单一记录还不能算是一个数据库,需要一些更大的结构来保存记录。出于简化目的,使用列表似乎也还不错。同样出于简化目的,也可以使用一个全局变量 *db*
,它可以用 DEFVAR 宏来定义。名字中的星号是 Lisp 的全局变量命名约定。
可以使用 PUSH 宏为 添加新的项。但稍微做得抽象一些可能更好,因此可以定义一个函数 add-record
来给数据库增加一条记录。
现在可以将 add-record
和 make-cd
一起使用,来为数据库添加新的 CD 记录了。
那些每次调用 add-record
以后 REPL 所打印出来的东西是返回值,也就是函数体中最后一个表达式 PUSH 所返回的值,并且 PUSH 返回它正在修改的变量的新值。因此你看到的其实是每次新记录被添加以后整个数据库的值。