7

我正在尝试从字符串中取出三个数字

(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把它变成一个变量,只有12and3被存储?

4

1 回答 1

11

请在此处阅读“理论” 。

简而言之,您可以使用以下方式绑定多个值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 形式作为地点

PS。在您的特定情况下,您可能只是这样做

(read-from-string (concatenate 'string 
                               "("
                               "12 3 6"
                               ")"))

并获取列表(12 3 6)。虽然这不是最有效的方法(因为它分配了不必要的内存)。

另请参阅:

  1. 如何使用 clisp 将字符串转换为列表?
  2. 在 lisp 中,如何使用 floor 函数返回的第二个值?
于 2014-11-03T03:54:58.863 回答