我知道values函数有助于控制REPL,但我想显式返回函数的最后一个值。唯一接近我设法找到我想要的东西是
(setf(…
没有标准运算符来获取最后一个值,甚至没有迭代值,但您可以使用它来解决这个问题 MULTIPLE-VALUE-CALL :
MULTIPLE-VALUE-CALL
(defun last-arg (&rest args) (first (last args))) (defmacro multiple-value-last (form) `(multiple-value-call #'last-arg ,form)) (multiple-value-last (floor 1.5)) ; => 0.5 (multiple-value-last (values 10 20 30)) ; => 30
至少在SBCL标准上 MULTIPLE-VALUE-LIST 似乎是这样实现的。
MULTIPLE-VALUE-LIST