मैं इस तरह कोड का इस्तेमाल किया। मुझे मिनीबफर में "1", "2", my-defvar
मिला।Emacs में defvar साथ सूची कैसे बनाएं
मेरा प्रश्न है कि सूची में स्ट्रिंग करने के लिए my-defvar
को कैसे परिवर्तित करें।
मैं इस तरह कोड का इस्तेमाल किया। मुझे मिनीबफर में "1", "2", my-defvar
मिला।Emacs में defvar साथ सूची कैसे बनाएं
मेरा प्रश्न है कि सूची में स्ट्रिंग करने के लिए my-defvar
को कैसे परिवर्तित करें।
लिस्प में, ´
-symbol उद्धरण शेष अभिव्यक्ति होगी। इसका अर्थ यह है कि मूल्य अभिव्यक्ति जैसा ही लिखा गया है, फ़ंक्शन कॉल का मूल्यांकन नहीं किया जाता है, चर को इसके मूल्य के साथ प्रतिस्थापित नहीं किया जाता है।
सबसे सीधा-आगे तरीका फ़ंक्शन list
का उपयोग करना है जो एक सूची बनाता है , के रूप में एक और जवाब में सुझाव दिया
(completing-read "input: " (list "1" "2" my-defvar))
बेशक, आप भी backquote सिंटैक्स का उपयोग कर सकते हैं: तत्वों का, मूल्यांकन करने के बाद यह बहस है, उदाहरण के लिए। यह आपको एक जटिल अभिव्यक्ति उद्धृत करने की अनुमति देता है लेकिन (यानी मूल्यांकन) इसके हिस्सों को अनकोट करता है। हालांकि, इस साधारण मामले में मुझे नहीं लगता कि यह नौकरी के लिए सही उपकरण है।
my-defvar
एक चर के रूप में मूल्यांकन नहीं किया जा रहा है, इसे प्रतीक के रूप में व्याख्या किया जा रहा है।
Emacs Lisp: evaluate variable in alist देखें।
तो:
(defvar my-defvar "test")
(completing-read "input: " `("1" "2" ,my-defvar))
काम करना चाहिए।
अद्यतन: @ Lindydancer के answer में एक और उचित समाधान दिया गया है, लेकिन मैं इसे संदर्भ के लिए यहां छोड़ देता हूं।
इसे * स्ट्रिंग अक्षर * के रूप में मूल्यांकन नहीं किया जा रहा है (जैसे कोट्स का उपयोग नहीं किया जाता है), इसके बजाय इसे * प्रतीक * के रूप में व्याख्या किया जा रहा है। – Lindydancer
मैंने अब इसे सही किया है, हालांकि मुझे लगता है कि आपका उत्तर अधिक उपयुक्त है। – MGwynne
धन्यवाद। यह काम करता हैं। – coordinate