LISP - 遍历数组 - MAPCAR

问题描述 投票:0回答:1

我在 SO 和书籍上找到了很多资源,但对我来说,没有一个是可以理解的(足够的)。 我正在尝试使用 LISP 遍历数组。

这是我创建数组的方式:

(setf question-array
      (make-array '(8 2)
                  :initial-contents
                  '((1 "How old are you:")
                    (2 "Whats your name:")
                    ...)))

但经过一些研究,我应该使用:

(mapcar (lambda (x)
          (print))
        '(question-array))

但它只打印:

QUESTION-ARRAY

我想打印每个问题。所以我想#'second? 我错过了什么?

(更多上下文:我的目标是向用户提问并以某种方式存储答案以在最后计算分数。)

非常感谢!

arrays iteration lisp
1个回答
0
投票
  1. mapcar
    仅适用于列表,不适用于数组
  2. 你没有在你的
    x
    中传递
    print
    lambda
  3. 你是 quoting
    (question-array)
    所以函数没有被调用 - 但它不是一个函数,它是一个变量!

迭代数组使用

map

(map nil #'print question-array)

dotimes

(dotimes (i (length question-array))
  (print (aref question-array i)))

loop

(loop for q across question-array
  do (print q))
© www.soinside.com 2019 - 2024. All rights reserved.