假设我将此代码发送给 clisp 解释器:
(values 'a 'b)
A ;
B
现在我希望记录此信息(使用 setf)并从结果中访问 A 和 B。 稍后我怎样才能访问那里的两个值? 我尝试这样做:
(setf result (values 'a 'b))
A
它只存储 'A 而不是 'B。我该怎么做?
最佳答案
如您所见,lisp 中的函数可以通过值形式返回多个值。如果要将值绑定(bind)到变量,可以使用多值绑定(bind)。示例
(multiple-value-bind (a b c) (values 1 2 3) (+ a b c))
1 将绑定(bind)到 a,2 将绑定(bind)到 b,3 将绑定(bind)到 c,因此评估表单的结果将为 6。如果您尝试将值表单设置为 var,则仅将使用第一个值。
关于lisp - 从 (values) lisp 获取第一个和第二个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26702610/