使数组更大 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)
我在 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)