Как получить стоимость имущества из структуры - PullRequest
0 голосов
/ 30 апреля 2019

У меня проблемы с Common Lisp под Linux Mint 17.3. Проблема в том, что я не смог получить элемент "сусла" в определении структуры. Я пытаюсь слишком "зацикливаться", чтобы получить его, но у меня ничего не получается.

(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 ]

3 голосов
/ 30 апреля 2019

Вы не должны помещать символы в 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)))
0 голосов
/ 01 мая 2019

Просто получите значение символа:

CL-USER 1 > (loop for currentFrageWort in deFrageWoerterCollection
                  do (format t "~A " (deutschesFrageWort-wort
                                       (symbol-value currentFrageWort))))
liebst LIEBST MAGST MAGST 
NIL
0 голосов
/ 01 мая 2019

Пожалуйста, найдите исправление форматирования. Я также включил небольшие изменения, чтобы ваш пример оценил. Я включил ответ Бармара, чтобы ваш код делал то, что вы хотите. Это кажется незначительным, но предоставление правильно отформатированного кода значительно облегчает чтение.

(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)))
...