कभी कभी जब अन्य लोगों के Clojure कोड को देखते हुए, मैं देख रहा हूँ एक समारोह है, जैसे defn
के माध्यम से परिभाषित और उसके बाद वर-उद्धरण सिंटैक्स का उपयोग बुलाया:Clojure कार्यों कॉलिंग का उपयोग कर वर-उद्धरण वाक्य रचना
user> (defn a [] 1)
#'user/a
user> (a) ; This is how you normally call a function
1
user> (#'a) ; This uses the var-quote syntax and produces the same result
1
के जीवन के लिए मैं फ़ंक्शन को कॉल करने के इन दो तरीकों के बीच अंतर नहीं समझ सकता। मुझे evaluation प्रलेखन में कुछ भी नहीं मिल रहा है यह कहने के लिए कि क्या होता है जब कॉल का ऑपरेटर एक var होता है जो सुझाव दे सकता है कि दूसरा फॉर्म क्यों पसंद किया जाएगा। वे दोनों binding
असाइनमेंट और सिंटैक्स-उद्धरण में प्रतिक्रिया देते हैं।
तो, क्या कोई कृपया एक कोड नमूना प्रदान कर सकता है जो ऊपर (a)
और (#'a)
के बीच अंतर को चित्रित करेगा?
संपादित करें: मुझे पता है कि वर-उद्धरण एक वर है कि एक let
शाब्दिक बाध्यकारी द्वारा आच्छादित है करने के लिए इस्तेमाल किया जा सकता है, लेकिन यह कोड है कि मैं पर देख रहा हूँ में मामला हो प्रतीत नहीं होता है।
अच्छा बिंदु - अब जब आप इसका उल्लेख करते हैं तो मुझे याद है कि यह स्वयं को अतीत में किया गया है। लेकिन जिस कोड को मैं देख रहा हूं वह एक गैर-निजी एफएन फोन कर रहा है, इसलिए मुझे लगता है कि वर्तमान में बाध्य मूल्य की कैशिंग से बचने की संभावना अधिक संभावना है। – Alex
क्योंकि कोड एक निजी रेपो में है। मैंने एक सामान्य प्रश्न पोस्ट किया, दो अच्छे जवाब मिले, और केवल एक ही स्वीकार कर सकते हैं, इसलिए मैंने उस व्यक्ति को स्वीकार किया जिसे मैंने सामान्य मामले का बेहतर जवाब दिया। – Alex