में एक स्ट्रिंग से एक चर नाम का निर्माण करें मैं एक स्ट्रिंग लेने की कोशिश कर रहा हूं, और इसे एक चर नाम में परिवर्तित कर रहा हूं। हालांकि मैं (मेक-प्रतीक) या (इंटर्न) ऐसा करूँगा, लेकिन स्पष्ट रूप से यह काफी नहीं है जो मैं चाहता हूं, या मैं इसे गलत तरीके से उपयोग कर रहा हूं।लिस्प
उदाहरण के लिए:
> (setf (intern (string "foo")) 5)
> foo
5
यहाँ मैं 5. सिवाय के एक मूल्य के साथ 'foo' नामक एक चर बनाने की कोशिश कर रहा होगा, इसके बाद के संस्करण कोड मुझे एक त्रुटि देता है। मैं क्या आदेश ढूंढ रहा हूं?
अरे, यह काम किया! अच्छी तरह की। मैं वास्तव में (सेट) का उपयोग करके मूल्यों को असाइन करने की कोशिश नहीं कर रहा हूं लेकिन एक अन्य फ़ंक्शन का उपयोग करके (एड-डीएम) जिसे मैंने नहीं बनाया है। जाहिर है, (ऐड-डीएम) में समान सीमा है (setf), जहां पहली अभिव्यक्ति का मूल्यांकन नहीं किया जाता है, इसलिए मुझे एक और तरीका पता लगाना होगा। लेकिन उसने चीजों पर कुछ प्रकाश डाला, इसलिए धन्यवाद! (साथ ही, मुझे एहसास है कि (स्ट्रिंग) अनावश्यक है, हालांकि मेरा अंतिम लक्ष्य समेकित तारों से प्रतीक बनाना है, इसलिए मैंने इसे एक फर्क पड़ने पर ही रखा है)। – Jeff
@ जेफ अगर 'एडीडी-डीएम' एक मैक्रो है, तो यह एक निर्यात किए गए फ़ंक्शन में विस्तारित हो सकता है जिसका उपयोग 'एसईटी' के समान तरीके से किया जा सकता है। '(Macroexpand-1 '(add-dm ...)) के परिणाम का निरीक्षण करने का प्रयास करें, यह देखने के लिए कि क्या आप भाग्य में हैं या नहीं। – WReach
एसईटी आवश्यक नहीं है। –