先の例は正常に動作しますが、さらに良い方法があります。次の練習では、 「連想リスト」を作成します。連想リストでは、値がキー値に関連付けられます。次に、連想リストの例を示します。
((10 4.46207 4.62318 0.0) (11 7.66688 4.62318 0.0) (40 . 1.018248))
サンプル連想リストの場合、キー値は、数値 10、11、40 です。これらのキー値は、リスト内で他と重複しないラベルの役割を果たします。ユーザが作成したプログラムから図形にアクセスすると、AutoCAD はこの方法を使用して、AutoLISP に図形データを返します。一般的に、キー値 10 は始点を示し、キー値 11 は終点を表します。
連想リストの利点は何でしょうか。1 つは、通常のリストと違い、返された値の順序が問題にならないことです。最初のリストをもう一度見てください。
((4.46207 4.62318 0.0) (7.66688 4.62318 0.0) 0.509124)
戻り値を見ただけでは、どれが始点のサブリストで、どれが終点のサブリストなのかが分かりません。さらに、将来、関数を修正したとき、定められた順序でデータが返されることを前提にしている他の関数に悪影響を与える可能性があります。
連想リストを使用すると、値の順序は問題になりません。連想リストの順序を変更しても、値が何を表すかを示すことができます。たとえば、リスト内のどこにあろうとも、値 11 は終点を表します。
((11 7.66688 4.62318 0.0) ; order of list (40 . 1.018248) ; has been (10 4.46207 4.62318 0.0)) ; modified