2014-11-03 8 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 

दे सकते हैं लेकिन मैं 2 और 4 कि यह लौटे का मूल्य कैसे स्टोर करते हैं। यदि मैं setq इसे एक चर में केवल 12 और 3 संग्रहीत कर रहा हूं?

उत्तर

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:

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

भी देखें VALUES Forms as Places

पीएस। अपने विशेष मामले में, तुम सिर्फ

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

करते हैं और सूची (12 3 6) मिल सकता है। हालांकि यह सबसे प्रभावी तरीका नहीं है (क्योंकि यह अनावश्यक स्मृति आवंटित करता है)।

पी पी एस यह भी देखें:

  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?
संबंधित मुद्दे

 संबंधित मुद्दे