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


6.5 ベクトル向け関数

ベクトルに関連した関数はつぎのとおりです。

— 機能: vectorp object

この関数は、objectがベクトルならばtを返す。

          (vectorp [a])
               => t
          (vectorp "asdf")
               => nil
     
— 機能: vector &rest objects

この関数は、引数objectsを要素とするベクトルを作成しそれを返す。

          (vector 'foo 23 [bar baz] "rats")
               => [foo 23 [bar baz] "rats"]
          (vector)
               => []
     
— 機能: make-vector length object

この関数は、各要素をobjectに初期化した length個の要素から成る新たなベクトルを返す。

          (setq sleepy (make-vector 9 'Z))
               => [Z Z Z Z Z Z Z Z Z]
     
— 機能: vconcat &rest sequences

この関数は、sequencesのすべての要素を入れた新たなベクトルを返す。 引数sequencesは、リスト、ベクトル、文字列を含む任意の配列でよい。 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は、引数としてバイトコード関数でも受け付ける。 これは、バイトコード関数オブジェクトの全内容を簡単に参照できるように するための特別な機能である。 see Byte-Code Objects

関数vconcatは、引数として整数も受け付ける。 整数はその10進の表示表現の文字列に変換してから、 その文字列を整数のかわりに使う。 この機能を使わないでほしい。 削除する予定である。 読者がこの機能を使っていたら、今すぐプログラムを直すこと! 整数をこのような10進数に変換する正しい方法は、 format(see Formatting Strings)や number-to-string(see String Conversion)を使うことである。

他の連結関数については、 Mapping FunctionsmapconcatCreating StringsconcatBuilding Listsappendを参照。

関数appendは、ベクトルを同じ要素から成るリストへ変換する便利な方法です (see Building Lists)。

     (setq avector [1 two (quote (three)) "four" [five]])
          => [1 two (quote (three)) "four" [five]]
     (append avector nil)
          => (1 two (quote (three)) "four" [five])