मुझे कुछ समस्याएं आ रही हैं कि "लेट" फॉर्म का उपयोग कैसे करें। नीचे दिए गए उदाहरण में, मैं फ़ंक्शन में बाद में काम करने के लिए स्थानीय रूप से "कोल्स" मान बांधना चाहता हूं। हालांकि, मैं जो देख रहा हूं, वह यह है कि यदि मैं "चलो" फ़ंक्शन का उपयोग करता हूं तो sel-opt-tmp एक सूची के बजाय एक शून्य मान वापस कर देगा।क्लोजर: स्कोप और फंक्शन रिटर्न वैल्यू
(defn sel-opt-tmp []
(let [cols "test"]))
(prn (sel-opt-tmp))
* उपरोक्त कोड एक शून्य मूल्य देता है।
मैं समझता हूं कि "चलो" केवल एक कार्य के दायरे में एक मूल्य को बांधता है, जो मुझे नहीं पता कि अगर स्कोप के मूल्य को पारित करने का कोई तरीका है। हो सकता है कि "वापसी" जैसी कोई चीज़ है जिसे मुझे पता नहीं है? या यह बस खराब डिजाइन है और मुझे इस मामले में बाध्यकारी का उपयोग नहीं करना चाहिए (यह उन कार्यों के लंबे श्रृंखला बनाने के लिए होता है जो पढ़ना मुश्किल है)?
'चलो' फॉर्म पूरी तरह से अंतिम अभिव्यक्ति देता है, जिसमें आपके मामले में अदृश्य 'शून्य' है। आपको इसे 'लौ' फॉर्म के शरीर में 'कोल्स' का उपयोग करने की आवश्यकता है। – seh
'" चलो "केवल फ़ंक्शन के दायरे में एक मान को बांधता है - यह बिल्कुल सही नहीं है। 'चलिए कहीं भी कहीं भी दिखाई दे सकते हैं, और बाध्य नामों का दायरा' चलो 'अभिव्यक्ति है। –