【发布时间】:2020-04-17 17:02:36
【问题描述】:
我正在尝试创建一个列表数组,其元素为:Surname、Name 和 Age。
这是我在 AutoLISP 中的代码:
(defun C:DP_ADINREG ( / prenume nume varsta inreg)
(initget 1)
(setq prenume (getstring "\nIntroduceti prenumele: "))
(initget 1)
(setq nume (getstring "\nIntroduceti numele: "))
(initget 7)
(setq varsta (getint "\nIntroduceti varsta: "))
(setq inreg (list (cons 'pn prenume) (cons 'nf nume)
(cons 'v varsta))
DP_DATA (append DP_DATA (list inreg))
)
(princ)
)
(defun C:DP_LISTARE ( / curent inreg n)
(setq curent DP_DATA
n 1)
(while curent
(setq inreg (car curent))
(princ (strcat "\nInregistrarea #" (itoa n)
": " (cdr (assoc 'pn inreg))
", " (cdr (assoc 'nf inreg))
". Varsta " (itoa (cdr (assoc 'v inreg)))
)
)
(setq curent (cdr curent)
n (1+ n)
)
)
(princ)
)
问题是,当尝试访问第二个函数时,它给了我一个错误,叫做:
错误的参数类型:fixnump:nil。
现在我不知道问题出在哪里。
有什么想法吗?
【问题讨论】:
-
如果 assoc 返回 nil(当列表中缺少 'v 时),cdr 也是 nil,并且 itoa 将失败(根据其他 Lisp 方言的工作方式猜测)