次: , 前: Arrays, 上: Sequences Arrays Vectors


6.3 配列操作関数

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

— 機能: arrayp object

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

          (arrayp [a])
               => t
          (arrayp "asdf")
               => t
          
          (arrayp (syntax-table))    ;; 文字テーブル
               => t
     
— 機能: 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も参照。

— 機能: 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

— 機能: 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