如何从结构中获得财产价值

时间:2019-04-30 19:48:00

标签: linux common-lisp

我在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)
      )
)

3 个答案:

答案 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