【问题标题】:Get first and second result from (values) lisp从(值)lisp 中获取第一个和第二个结果
【发布时间】:2025-12-20 00:15:11
【问题描述】:

假设我将此代码发送到 clisp 解释器:

(值'a'b)
一个 ;

现在我希望记录这些信息(使用 setf)并从结果中访问 A 和 B。 我以后如何访问那里的两个值? 我试着做:

(setf 结果 (值 'a 'b))
一个

它只存储 'A 而不是 'B。我该怎么做?

【问题讨论】:

标签: lisp


【解决方案1】:

如您所见,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))
最近更新 更多