我编写了一个函数来查询我为学校编写的小型数据库程序。此函数按名称搜索。当我自己运行该功能时,它可以工作。当我在菜单中运行它时它不起作用(它返回 NIL)。这是所有相关的内容:
(defun prompt-read (prompt)
(format *query-io* "~a: " prompt)
(force-output *query-io*)
(read-line *query-io*))
(defun search-name (name)
(remove-if-not
#'(lambda (cat) (equal (getf cat :name) name)) *db*))
(defun input-name ()
(search-name
(prompt-read "Name")))
(defun search-menu ()
(print "1) Search Name")
(print "2) Search Color")
(print "3) Search Min. Weight")
(print "4) Search Min. Experience")
(print "5) Search Min. Length")
(setf choose (read))
(cond ((= choose 1)(input-name))
((= choose 2)(print "Color"))
((= choose 3)(print "Weight"))
((= choose 4)(print "XP"))
((= choose 5)(print "Color"))
)
NIL
)
现在我只致力于让名称搜索工作,菜单的其余部分只是占位符。当我自己运行“输入名称”(使用搜索名称)时,它会返回正确的结果。当我尝试搜索菜单中的第一个选项(也运行“输入名称”)时,它返回 NIL。我想知道为什么当我单独运行它时它会起作用,但与该菜单一起使用时却不起作用。如果有人需要任何其他信息,请随时询问。我会尽力提供。另外,我是初学者,请见谅。