使数组更大 LISP

Make an array larger LISP

我在 LISP 中有一个数组,我需要在不修改它的情况下使其变大

例如: (1 2 3 4)尺寸=4

我愿意

(1 2 3 4 NIL NIL)尺寸=6

我该怎么做?我又想到了make-array,复制“旧”数组的前一个元素

谢谢

(append '(1 2 3 4) '(NIL NIL))
;; => (1 2 3 4 NIL NIL)

有多种方法可以做到这一点,选择哪一种主要取决于您想要什么。

如果要将 N 元素数组[*] 更改为 N+2 元素数组,可以使用 [vector-push-extend][1] 和合适的参数。如果,也就是元素类型如果你的数组兼容加一个NIL.

如果不想修改原数组,可以结合使用make-array和显式设置元素。同样,根据数组的元素类型,您可能无法使用 nil 个元素“扩展”它。

[*] 我暂时假设“一维数组”

你想要这样的东西吗?

> (defparameter a1 (make-array 4 :adjustable t :initial-contents '(1 2 3 4)))
> a1
#(1 2 3 4)
> (adjust-array a1 6 :initial-element 0)
#(1 2 3 4 0 0)