क्या Emacs Lisp में एक अस्थायी वैरिएबल के माध्यम से सीधे कई वेरिएबल वैल्यूज़ को वेरिएबल में असाइन करना संभव है?
उदाहरण के लिए, मान लें कि मेरे पास एक फ़ंक्शन है जो दो सूचियों की सूची लौटाता है:
(defun test-func ()
(setq a '(a b))
(setq b '(c d))
`(,a ,b))
अगर मैं पहली रिटर्न वैल्यू list-a
और दूसरा रिटर्न वैल्यू असाइन करना चाहता हूं list-b
, तो मैं एक अस्थायी चर का उपयोग करके ऐसा कर सकता हूं temp
, उदाहरण के लिए:
(let* ((temp (test-func)) (list-a (car temp)) (list-b (cadr temp)))
(message-box (prin1-to-string list-a))
(message-box (prin1-to-string list-b)))
क्या यह अधिक सरल रूप से करना संभव है? (मैं पर्ल और पायथन के लिए उपयोग किया जाता हूं जहां आपको एक अस्थायी चर निर्दिष्ट करने की आवश्यकता नहीं है)
let
फंक्शन के अंदर इस्तेमाल करना भूल गया .. मैंने कोई ग्लोबल वैरिएबल सेट करने की योजना नहीं बनाई :)
cl-destructuring-bind
मैक्रो की कोशिश कर सकते हैं । इसके अलावा, क्या आप वास्तव मेंsetq
अंदर का उपयोग करने का इरादा रखते हैंdefun
?setq
एक "विशेष" (विश्व स्तर पर सुलभ) चर बनाता है, कुछ जिसे आप आमतौर पर एक फ़ंक्शन के बाहर रखते हैं (क्योंकि एक ही चर को एक से अधिक बार घोषित करने में बहुत कम अर्थ है, जबकि कार्यों को एक से अधिक बार चलाने का इरादा है)।