【发布时间】:2025-12-20 00:15:11
【问题描述】:
假设我将此代码发送到 clisp 解释器:
(值'a'b)
一个 ;
乙
现在我希望记录这些信息(使用 setf)并从结果中访问 A 和 B。 我以后如何访问那里的两个值? 我试着做:
(setf 结果 (值 'a 'b))
一个
它只存储 'A 而不是 'B。我该怎么做?
【问题讨论】:
-
你应该看看multiple-value-bind。
标签: lisp
假设我将此代码发送到 clisp 解释器:
(值'a'b)
一个 ;
乙
现在我希望记录这些信息(使用 setf)并从结果中访问 A 和 B。 我以后如何访问那里的两个值? 我试着做:
(setf 结果 (值 'a 'b))
一个
它只存储 'A 而不是 'B。我该怎么做?
【问题讨论】:
标签: lisp
如您所见,lisp 中的函数可以通过值形式返回多个值。如果要将值绑定到变量,可以使用多值绑定。示例
(multiple-value-bind (a b c) (values 1 2 3) (+ a b c))
1 将绑定到 a,2 将绑定到 b,3 将绑定到 c,因此计算表单的结果将为 6。如果您尝试将值表单设置为 var,那么只有将使用第一个值。
【讨论】:
setf 就够了:(setf (values x y) (values 1 2))。