Function VECTOR-PUSH, VECTOR-PUSH-EXTEND
vector-push new-element vector => new-index-p
vector-push-extend new-element vector &optional extension => new-index
new-element - オブジェクト
vector - fill-pointerを持つvector
extension - 正の整数。デフォルトは実装依存。
new-index-p - vectorの有効な配列のインデックスか、nil。
new-index - vectorの有効な配列のインデックス
vector-pushとvector-push-extendは、 vector内にnew-elementを格納します。 vector-pushは、new-elementを fill-pointerによって指定された vectorの要素に格納しようと試み、 そしてfill-pointerをひとつ増加させます。 もし(>= (fill-pointer vector) (array-dimension vector 0))のときは、 vectorにもfill-pointerにも影響を与えません。 その他の場合は、格納と増加をしてから、 vector-pushはvectorに残る値よりひとつ小さい、 以前のfill-pointerの値を返します。
vector-push-extendはvector-pushと似ていますが、 もしfill-pointerが大きすぎるときに、 vectorをadjust-arrayを用いて拡張し、 多くの要素を含めることができるようになることが違っています。 extensionは、もし拡張が必要になったときに vectorに追加する最小の要素数です。
vector-push-extendとvector-pushは、 vector内のnew-elementのインデックスを返却します。 もし(>= (fill-pointer vector) (array-dimension vector 0))のとき、 vector-pushはnilを返却します。
(vector-push (setq fable (list 'fable))
(setq fa (make-array 8
:fill-pointer 2
:initial-element 'first-one))) => 2
(fill-pointer fa) => 3
(eq (aref fa 2) fable) => true
(vector-push-extend #\X
(setq aa
(make-array 5
:element-type 'character
:adjustable t
:fill-pointer 3))) => 3
(fill-pointer aa) => 4
(vector-push-extend #\Y aa 4) => 4
(array-total-size aa) => at least 5
(vector-push-extend #\Z aa 4) => 5
(array-total-size aa) => 9 ;(or more)fill-pointerの値。
どのようにvectorが生成されたか。
vectorを拡張しようとしたときに vectorが実際にadjustableではなかったとき、 vector-push-extendによって型errorのエラーが発生します。
vectorがfill-pointerを持たなかったとき、 型errorのエラーが発生します。
adjustable-array-p, fill-pointer, vector-pop
なし。