AutoLISP には、リストを扱うための関数があります。ここでは、append、assoc、car、cons、list、nth、subst 関数の例を示します。すべてのリスト処理関数の概要については、「AutoLISP の関数の概要(AutoLISP)」の「リスト操作関数(AutoLISP)」を参照してください。
リストは、多数の関連する値を保持するときに効率的かつ強力な方法です。なにしろ、LISP はリスト処理(LISt Processing)言語であるために、LISP と呼ばれています。リストの能力を理解すれば、より強力で柔軟性のあるアプリケーションを作成できることが分かるでしょう。
AutoLISP には、2D や 3D のグラフィックス アプリケーションをプログラミングするための基本機能を提供する関数があります。これらの関数は、リスト形式で点の値を返します。
list 関数は、関連する項目をグループ化する簡単な方法です。これらの項目は、同じタイプのデータでなくてもかまいません。次のコードは、3 つの関連する項目をリストとしてグループ化します。
(setq lst1 (list 1.0 "One" 1)) (1.0 "One" 1)
nth 関数を使用して、変数 lst1 のリストから特定の項目を取り出すことができます。この関数には、2 つの引数を指定します。最初の引数は、どの項目を返すかを指定する整数です。最初の引数として 0(ゼロ)を指定するとリストの最初の項目が返され、1 を指定すると 2 番目の項目が返されるというようになります.2 番目の引数には、項目を取り出すリストを指定します。次に示すコードは、lst1 の 2 番目の項目を返します。
(nth 1 lst1) "One"
cdr 関数は、リストから最初の要素以外のすべての要素を返します。次に、例を示します。
(cdr lst1) ("One" 1)
car 関数は、リストから項目を取り出す別の方法です。car 関数と cdr 関数を使用する方法、およびこの 2 つの関数を組み合わせて使用する方法については、「概要 - 点リスト(AutoLISP)」を参照してください。
既存のリストを変更する関数は 3 つあります。append 関数は、新しい項目を末尾に追加したリストを返します。cons 関数は、新しい項目を先頭に追加したリストを返します。subst 関数は、古い項目があるたびにそれを新しい項目で置き換えたリストを返します。これらの関数は元のリストを変更せず、変更された新しいリストを返します。元のリストを変更するには、明示的に古いリストを新しいリストで置き換えなければなりません。
append 関数は、任意の数のリストを 1 つのリストにまとめます。したがって、この関数の引数はすべてリストでなければなりません。次のコードは、別の "One" をリスト lst1 に追加します。文字列 "One" を含むリストを作成する簡単な方法として、quote(または ' ) 関数を使用している点に注目してください。
(setq lst2 (append lst1 '("One"))) (1.0 "One" 1 "One")
cons 関数は、1 つの要素をリストに結合します。cons 関数を使用すると、別の文字列 "One" をこの新しいリスト lst2 の先頭に追加できます。
(setq lst3 (cons "One" lst2 )) ("One" 1.0 "One" 1 "One")
subst 関数を使用すると、リスト内の指定された項目をすべて新しい項目で置き換えることができます。次の例では、文字列 "One" をすべて文字列 "one" で置き換えています。
(setq lst4 (subst "one" "One" lst3)) ("one" 1.0 "one" 1 "one")