compojure library in the core namespace में, मुझे निम्न प्रपत्र दिखाई देता है:क्लोजर: # '/ (var ...) फॉर्म का उपयोग क्या है?
(defn- compile-route
"Compile a route in the form (method path & body) into a function."
[method route bindings body]
`(#'if-method ~method
(#'if-route ~(prepare-route route)
(fn [request#]
(let-request [~bindings request#]
(render (do [email protected]) request#))))))
और
(defmacro GET "Generate a GET route."
[path args & body]
(compile-route :get path args body))
फ़ाइल में आगे, if-method
और if-route
फ़ंक्शन defn-
s के साथ परिभाषित किए गए हैं।
हालांकि मैं इस compile-route
फ़ंक्शन में #'
के अर्थ को समझ नहीं पा रहा हूं। Xzx47 के लिए दस्तावेज़ कहते हैं:
प्रतीक को एक var को हल करना होगा, और Var ऑब्जेक्ट स्वयं (उसका मान नहीं) वापस कर दिया जाएगा। पाठक मैक्रो # एक्स एक्स (var x) तक फैलता है।
लेकिन मेरे लिए, क्या हो रहा है (यानी डिफैक्रो से कहा जा रहा है) के संदर्भ में, ऐसा लगता है कि इसका मतलब है कि प्रतीक का मूल्य वापस कर दिया जाएगा, जो वही है जो प्रतिस्थापन की तरह लगता है :
(def x 5)
(+ x 7)
-> 12
यानी, (+ x 7)
विस्तारित है, या (+ 5 7)
जैसा है, मैं यहां क्या खो रहा हूं?
यह बिल्कुल कारण है। – kotarak
पुष्टि के लिए धन्यवाद! –
एक और टिप्पणी: प्रतीक संदर्भ नहीं रखते हैं। वर्स करते हैं। यह लिस्प, IIUC के लिए एक अंतर है। प्रतीक केवल नाम हैं और संकलक द्वारा वर्स को हल कर रहे हैं। कोड काम करता है, क्योंकि वारा उस चीज़ को सभी '.invoke' कॉल को प्रतिनिधि करता है। – kotarak