次: Vectors, 前: Arrays, 上: Sequences Arrays Vectors
本節では任意の配列型を受け付ける関数を説明します。
この関数はobjectが配列 (つまり、ベクトル、文字列、ブールベクトル、あるいは、文字テーブル)ならば、
t
を返す。(arrayp [a]) => t (arrayp "asdf") => t (arrayp (syntax-table)) ;; 文字テーブル => t
この関数はarrayのindex番目の要素を返す。 最初の要素の添字は0。
(setq primes [2 3 5 7 11 13]) => [2 3 5 7 11 13] (aref primes 4) => 11 (aref "abcdefg" 1) => 98 ; `b'は、ASCIIコード98
Sequence Functionsの関数
elt
も参照。
この関数は配列arrayのindex番目の要素にobjectを設定する。 objectを返す。
(setq w [foo bar baz]) => [foo bar baz] (aset w 0 'fu) => fu w => [fu bar baz] (setq x "asdfasfd") => "asdfasfd" (aset x 3 ?Z) => 90 x => "asdZasfd"arrayが文字列であり、かつ、objectが文字でなければ、 結果はエラー
wrong-type-argument
となる。 arrayが文字列であり、かつ、objectが文字であっても、 現在(aref
object index)
に保存されている文字のバイト数と objectが使うバイト数が異なれば、やはり、エラーとなる。 see Splitting Characters。
この関数は、配列arrayをobjectで埋め、 arrayの各要素がobjectとなるようにする。 arrayを返す。
(setq a [a b c d e f g]) => [a b c d e f g] (fillarray a 0) => [0 0 0 0 0 0 0] a => [0 0 0 0 0 0 0] (setq s "When in the course") => "When in the course" (fillarray s ?-) => "------------------"arrayが文字列であり、かつ、objectが文字でなければ、 結果はエラー
wrong-type-argument
になる。
配列であることが既知のオブジェクトに対しては、
汎用のシーケンス関数copy-sequence
やlength
がしばしば有用です。
See Sequence Functions。