配列を空にする - lisp-cookbook-ja/common-lisp GitHub Wiki

配列

配列を空にする

配列の要素を削除して空にする訳ではありませんが、フィルポインタ付きのベクタの場合、フィルポインタを0にセットすることにより空にすることが可能です。FIXME

(let ((a (make-array 3 :adjustable T 
                       :fill-pointer 3
                       :initial-contents '(1 2 3))))
  (print a)
  (setf (fill-pointer a) 0)             ;フィルポインタを0にセット
  (print a)                             ;#()になった
  (vector-push 'a a)                    ;'Aをプッシュ
  (print a))                            ;#(A)になった
;-> #(1 2 3) 
;-> #() 
;-> #(A)
;=> #(A)