2014-11-03 3 views
6

내가 지금이 그것을 구문 분석 할 수있는 숫자 인뿐만 아니라 2를 반환하는 문자열함수에서 반환되는 여러 값 (예 : cl : parse-integer)에 액세스하는 방법은 무엇입니까?

(parse-integer "12 3 6" :start 0 :junk-allowed t) 
12 ; 
2 

에서 세 개의 숫자를 얻기 위해 노력하고있어. 그래서 지금

(parse-integer "12 3 6" :start 2 :junk-allowed t) 
3 ; 
4 

을 제공 할 수 있습니다하지만 어떻게 그것을 반환 24의 값을 저장 않습니다. 변수에 setq을 입력하면 123 만 저장됩니까?

답변

11

"이론"here을 읽어보십시오.

간단히, 당신은 결합 할 수있는 multiple valuesmultiple-value-bind과 :

(multiple-value-bind (val pos) (parse-integer "12 3 6" :start 0 :junk-allowed t) 
    (list val pos)) 
==> (12 2) 

할 수도 setf 여러 values : 또한 VALUES Forms as Places

(setf (values val pos) (parse-integer "12 3 6" :start 0 :junk-allowed t)) 
val ==> 12 
pos ==> 2 

참조하십시오.

추신. 귀하의 특별한 경우, 당신은 할 수 있습니다

그리고 (12 3 6) 목록을 얻으십시오. 이것은 (불필요한 메모리를 할당하기 때문에) 가장 효율적인 방법은 아닙니다.

PPS는 참조 :

  1. How to convert a string to list using clisp?
  2. In lisp, how do I use the second value that the floor function returns?