Next: , Previous: Arrays, Up: Sequences Arrays Vectors


6.3 配列操作関数

本節では任意の配列型を受け付ける関数を説明します。

— Function: arrayp object

この関数はobjectが配列 (つまり、ベクトル、文字列、ブールベクトル、あるいは、文字テーブル)ならば、 tを返す。

          (arrayp [a])
               ⇒ t
          (arrayp "asdf")
               ⇒ t
          
          (arrayp (syntax-table))    ;; 文字テーブル
               ⇒ t
— Function: aref array index

この関数はarrayindex番目の要素を返す。 最初の要素の添字は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も参照。

— Function: aset array index object

この関数は配列arrayindex番目の要素に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

— Function: fillarray array object

この関数は、配列arrayobjectで埋め、 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-sequencelengthがしばしば有用です。 See Sequence Functions