我想从一个字符串中得到三个数字
(parse-integer "12 3 6" :start 0 :junk-allowed t)
12 ;
2
现在这也返回 2
,这是它可以被解析的数字。
所以我现在可以给
(parse-integer "12 3 6" :start 2 :junk-allowed t)
3 ;
4
但是我如何存储它返回的 2
和 4
的值。如果我 setq
将其放入变量中,则只存储 12
和 3
?
最佳答案
请看《理论》here .
简而言之,您可以绑定(bind) multiple values与 multiple-value-bind
:
(multiple-value-bind (val pos) (parse-integer "12 3 6" :start 0 :junk-allowed t)
(list val pos))
==> (12 2)
(setf (values val pos) (parse-integer "12 3 6" :start 0 :junk-allowed t))
val ==> 12
pos ==> 2
附言。在您的特定情况下,您可能只是这样做
(read-from-string (concatenate 'string
"("
"12 3 6"
")"))
并获取列表(12 3 6)
。
但这不是最有效的方法(因为它分配了不必要的内存)。
PPS 另见:
关于lisp - 如何访问函数返回的多个值(例如,cl :parse-integer)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26707085/