如何访问一个函数返回的多个值(例如cl:prese integer)



我正试图从字符串中获取三个数字

(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

但是我如何存储它返回的24的值。如果I setq将其存储为变量,则仅存储123

请阅读此处的"理论"。

简而言之,您可以使用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另请参阅:

  1. 如何使用clisp将字符串转换为列表
  2. 在lisp中,如何使用floor函数返回的第二个值

相关内容

最新更新