我在Linux Mint 17.3下使用Common Lisp遇到麻烦。 问题是,我无法在结构定义中获得“麦芽汁”项目。 我也尝试“循环”以获取它,但是我失败了。
(defstruct deutschesFrageWort wort pro1 pro2)
(setq deFrageWort-1 (make-deutschesFrageWort :wort "liebst" :pro1 'du :pro2 'sie))
(defvar deFrageWort-2 (make-deutschesFrageWort :wort 'liebst :pro1 'du :pro2 'ihn))
(defvar deFrageWort-3 (make-deutschesFrageWort :wort 'magst :pro1 'du :pro2 'ihn))
(defvar deFrageWort-4 (make-deutschesFrageWort :wort 'magst :pro1 'du :pro2 'sie))
;;
(setq deFrageWoerterCollection '(
deFrageWort-1
deFrageWort-2
deFrageWort-3
deFrageWort-4
))
(loop :for currentFrageWort :in deFrageWoerterCollection
:do (progn
(format t "~A~" symstr)
(eval defragewort-1-wort)
)
)
答案 0 :(得分:3)
您不应在deFrageWoerterCollection
中放入符号。自己放置结构。
您需要调用deutschesFrageWort-wort
来使wort
插槽脱离结构。
(setq deFrageWoerterCollection (list deFrageWort-1 deFrageWort-2 deFrageWort-3 deFrageWort-4)
(loop :for currentFrageWort :in deFrageWoerterCollection
:do (format t "~A~&" (deutschesFrageWort-wort currentFrageWort)))
答案 1 :(得分:0)
请查找格式的更正。我还进行了一些修改,以便您的示例可以评估。我包括了Barmar的答案,以便使您的代码能够执行您想要的事情。似乎很小,但是提供正确格式的代码将极大地提高可读性。
(defstruct deutschesFrageWort wort pro1 pro2)
(defvar deFrageWort-1 (make-deutschesFrageWort :wort 'liebst :pro1 'du :pro2 'sie))
(defvar deFrageWort-2 (make-deutschesFrageWort :wort 'liebst :pro1 'du :pro2 'ihn))
(defvar deFrageWort-3 (make-deutschesFrageWort :wort 'magst :pro1 'du :pro2 'ihn))
(defvar deFrageWort-4 (make-deutschesFrageWort :wort 'magst :pro1 'du :pro2 'sie))
(defvar deFrageWoerterCollection
(list deFrageWort-1
deFrageWort-2
deFrageWort-3
deFrageWort-4))
(loop :for currentFrageWort :in deFrageWoerterCollection
:do (format t "~A~&" (deutschesFrageWort-wort currentFrageWort)))
答案 2 :(得分:0)
只需获取符号值:
CL-USER 1 > (loop for currentFrageWort in deFrageWoerterCollection
do (format t "~A " (deutschesFrageWort-wort
(symbol-value currentFrageWort))))
liebst LIEBST MAGST MAGST
NIL