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
(2
:fill-pointer :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
3))) => 3
:fill-pointer 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
なし。