% Function VECTOR-PUSH, VECTOR-PUSH-EXTEND
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
なし。