Function VECTOR-PUSH, VECTOR-PUSH-EXTEND

UP


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-pushvector-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-pushvectorに残る値よりひとつ小さい、 以前のfill-pointerの値を返します。

vector-push-extendvector-pushと似ていますが、 もしfill-pointerが大きすぎるときに、 vectoradjust-arrayを用いて拡張し、 多くの要素を含めることができるようになることが違っています。 extensionは、もし拡張が必要になったときに vectorに追加する最小の要素数です。

vector-push-extendvector-pushは、 vector内のnew-elementのインデックスを返却します。 もし(>= (fill-pointer vector) (array-dimension vector 0))のとき、 vector-pushnilを返却します。

例文

(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

備考

なし。


TOP, Github