ベクトルに関連する関数をいくつか紹介します。
この関数は、object がベクトルである場合に t
を返します。
(vectorp [a])
⇒ t
(vectorp "asdf")
⇒ nil
この関数は、引数を要素とするベクトル objects を生成して返します。
(vector 'foo 23 [bar baz] "rats")
⇒ [foo 23 [bar baz] "rats"]
(vector)
⇒ []
この関数は、各要素が object で初期化された length 個の要素からなる新しいベクトルを返します。
(setq sleepy (make-vector 9 'Z))
⇒ [Z Z Z Z Z Z Z Z Z]
この関数は、sequences のすべての要素を含む新しいベクトルを返します。引数 sequences には、適切なリスト、ベクトル、文字列、または bool-vector を指定できます。sequences が指定されない場合は、空のベクトルが返されます。
値は、空ベクトルであるか、あるいは既存のどのベクトルとも eq
とならない、新たに構築された非空ベクトルのいずれかである。
(setq a (vconcat '(A B C) '(D E F)))
⇒ [A B C D E F]
(eq a (vconcat a))
⇒ nil
(vconcat)
⇒ []
(vconcat [A B C] "aa" '(foo (6 7)))
⇒ [A B C 97 97 foo (6 7)]
vconcat
関数は、バイトコード関数オブジェクトを引数として受け取ることもできます。これは、バイトコード関数オブジェクトの全内容に容易にアクセスできるようにするための特別な機能です。クロージャ関数オブジェクトを参照してください。
その他の連結関数については、マッピング関数のmapconcat、文字列の作成のconcat、およびConsセルとリストの構築のappendを参照してください。
append 関数は、ベクトルを同じ要素を持つリストに変換する手段も提供しています:
(setq avector [1 two (quote (three)) "four" [five]])
⇒ [1 two '(three) "four" [five]]
(append avector nil)
⇒ (1 two '(three) "four" [five])