Let
AutoLISP には Common Lisp にある局所変数 let や let* はない。
そのため、局所変数を使いたいケースでは、サブルーチン的な関数作ってそっちでローカル変数使って処理するか、lambda を使って let を代用する方法が考えられる。 コスト的には lambda 使ったほうが効率いいと思うけど、バランスで使い分けかな。
; let の代用で lambda を使う例 ; (* x y) を (let ((x 2)) (* x y)) で処理したいような時 (setq x 1 y 2) ; 普通の変数をセット (* x y) ; 1x2=2 ; 変数 x を let 的に処理して (* x y) の結果を返す (apply (lambda (x) ; 局所変数 (setq x 2) ; lambda 内の x をセット (* x y)) '(x) ) ; 2x2=4 (* x y) ; 1x2=2 普通の変数は変わってないのでlambda前と同じ結果
関連記事