我正试图从字符串中获取三个数字
(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
的值。如果I setq
将其存储为变量,则仅存储12
和3
?
请阅读此处的"理论"。
简而言之,您可以使用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
:
(setf (values val pos) (parse-integer "12 3 6" :start 0 :junk-allowed t))
val ==> 12
pos ==> 2
另请参见VALUES Forms as Places。
PS。在你的特殊情况下,你可以只做
(read-from-string (concatenate 'string
"("
"12 3 6"
")"))
得到列表CCD_ 10。不过,这并不是最有效的方法(因为它会分配不必要的内存)。
PPS另请参阅:
- 如何使用clisp将字符串转换为列表
- 在lisp中,如何使用floor函数返回的第二个值