摘自 《ANSI Common Lisp》
一、数组
可以调用 make-array 构造一个数组。第一个参数为一个列表,为数组的维度(如果只想要一个一维数组,可以给make-array第一个参数一个整数,而不是一个列表)。数组在 Common Lisp里至少可以有七个维度,每个维度至少可以有1023个元素。
:initial-element参数是选择性的。如果提供了这个参数,整个数组会用指定的值作初始化。
CL-USER> (setf arr (make-array '(2 3) :initial-element nil))
(setf arr (make-array '(2 3) :initial-element nil))
#2A((NIL NIL NIL) (NIL NIL NIL))
取出数组内的元素我们调用 aref :
CL-USER> (aref arr 0 0)
NIL
要替换数组的某个元素,我们使用 setf 和 aref :
CL-USER> (setf (aref arr 0 0) 'b)
B
一个一维数组又称为向量,通过调用vector ,他会返回一个无论你给入什么参数的向量。
CL-USER> (vector "a" 'b 3)
#("a" B 3)
你可以用 aref 来存取向量,但有一个更快的函数叫做 svref 给存取向量使用。
CL-USER> (svref vec 0)