% 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
なし。