0 lisp arrays iteration common-lisp
我在 SO 和书籍上找到了很多资源,但没有一个对我来说是可以理解的(足够的)。我正在尝试使用 LISP 迭代数组。
这是我创建数组的方法:
(setf question-array
(make-array '(8 2)
:initial-contents
'((1 "How old are you:")
(2 "Whats your name:")
...)))
Run Code Online (Sandbox Code Playgroud)
但经过一些研究,看起来我应该使用:
(mapcar (lambda (x)
(print))
'(question-array))
Run Code Online (Sandbox Code Playgroud)
但它只打印:
QUESTION-ARRAY
Run Code Online (Sandbox Code Playgroud)
我想打印每个问题。所以我猜#'第二?我缺少什么?
(更多背景信息:我的目标是向用户提出问题并以某种方式存储答案以在最后计算分数。)
多谢 !
(setq question-vector (vector "question 1" "question 2" ...))
(map nil #'print question-vector)
Run Code Online (Sandbox Code Playgroud)
或者dotimes
:
(dotimes (i (length question-vector))
(print (aref question-vector i)))
Run Code Online (Sandbox Code Playgroud)
或者loop
:
(loop for q across question-vector
do (print q))
Run Code Online (Sandbox Code Playgroud)
您question-array
实际上是 2 维array
而不是 a vector
(所以它不是 a sequence
,并且map
无法帮助您)。
相反,你可以这样做
(dotimes (i (array-dimension question-array 0))
(print (aref question-array i 1)))
Run Code Online (Sandbox Code Playgroud)