如何解决使阵列更大的 LISP
我在 LISP 中有一个数组,我需要在不修改它的情况下使其更大
例如:
(1 2 3 4)
大小=4
我愿意
(1 2 3 4 NIL NIL)
size=6
我该怎么做?我又想到了make-array
,复制了“旧”数组的前一个元素
谢谢
解决方法
有几种方法可以做到这一点,选择哪一种主要取决于您想要什么。
如果要将 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)
,
(append '(1 2 3 4) '(NIL NIL))
;; => (1 2 3 4 NIL NIL)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。