辅助变量

&AUX 关键字可用于定义函数的局部变量。它们不是参数; 用户无法提供它们。

&AUX 变量很少使用。你总是可以使用 LET,或者在函数体中定义局部变量的其他方法。

&AUX 变量具有以下优点:整个函数体的局部变量移动到顶部,并且它使得一个缩进级别(例如由 LET 引入)不必要。

(defun foobar (x y &aux (z (+ x y)))
  (format t "X (~d) and Y (~d) are required.~@
             Their sum is ~d."
          x y z))

(foobar 10 20)
; X (10) and Y (20) are required.
; Their sum is 30.
;=> NIL

一种典型用法可以是解析指示符参数。再说一次,你不需要这样做; 使用 let 就像惯用语一样。

(defun foo (a b &aux (as (string a)))
  "Combines A and B in a funny way.  A is a string designator, B a string."
  (concatenate 'string as " is funnier than " b))