リストとは?
リストは、いくつもの値をまとめたものです。
例えば、図形の情報を得る関数 entsel の戻り値はリストです。
(entsel) とコマンドラインに入力し、図形を選択すると、
(<Entity name: x1xx2xx3xx> (13.4 15.4 0))
が戻り値です。これは、
- <Entity name: x1xx2xx3xx>
- (13.4 15.4 0)
この2つの情報がリストとしてまとめてあるものです。
さらに、2つ目の要素の(13.4 15.4 0)も。
- 13.4
- 15.4
- 0
この3つの数値をひとまとめにリストにしたものです。
この場合だと、図形名、座標位置のX値、Y値、Z値、4つの値がひとまとめになっています。1つの変数に一気に4つ値をいれることができ、必要なときは、関数を使って各要素を取りだすこともできる、とても便利な物です。
他にも、関数getpoint で取得できる座標情報や、DXF図形情報の円の中心点、線分の始点終点、ブロックの挿入点などなども、X値、Y値、Z値、3つの情報がひとまとめになったリストです。
関数 entsel についてもっと知りたい方はコチラの記事を。
ちなみに、AutoLISP の LISPは、LISt Processing (リスト処理)の略なんだって。
AutoLISP 関数 list
関数 list は、リストを作成する関数です。
リストに入れる要素は、数列でも文字列でもかまいません。
(setq Lst1 (list “Apple” “Book” 123 456 ))
これで、4つの要素がリスト化された (“Apple” “Book” 123 456) を変数 Lst1 に入れることができます。
list 関数名の省略 ’
関数list は関数名を省略することができ、その場合は、’ を使います。
(setq Lst1 ‘(“Apple” “Book” 123 456 ))
で、(setq Lst1 (list “Apple” “Book” 123 456 ))と同じように、(“Apple” “Book” 123 456) を変数 Lst1 に入れることができます。
変数や関数式をリスト要素にするときの注意点
list の引数には、変数や関数式も入れることができます。が、変数や数式を入れる場合は省略できません。
例えば、
(setq A “Apple”)
まず、変数 A に文字列”Apple”を定義し、 (1+ 2) と、変数Aをリストにします。
1+ は引数に1を足す関数です。
(setq Lst2 (list (1+ 2) A ))
計算式は計算され、変数は値がリストに入り、
(3 “Apple”) というリストが戻り値なります。
しかし、関数を省略して ‘ を使った場合、
(setq Lst3 ‘( (1+ 2) A ))
では、数式や変数の値を評価してくれずに、そのまま、((1+ 2) A) というリストになってしまい、正しい値のリストにはなりません。
リストに要素そのものを入力しないときは、関数名を省略しないようにしましょう。
まとめ
- リストはいくつもの情報をひとまとめにしたもの。
- listは引数で渡す複数の値をリスト化できる関数。
- list は関数名を省略して、カッコの前に ‘ でもリストにできる.
- リストにする要素は、計算式や変数が使えるけれど、その場合は関数名を省略できない。