2016-05-11 4 views
5

मैं इस ट्यूटोरियल का अनुसरण कर रहा हूं building a Clojure backend और मैं क्लोजर में बिल्कुल अच्छी तरह से नहीं जानता हूं।क्लोजर # 'मतलब

ट्यूटोरियल इस स्रोत फ़ाइल

(ns shouter.web 
    (:require [compojure.core :refer [defroutes GET]] 
      [ring.adapter.jetty :as ring])) 

(defroutes routes 
    (GET "/" [] "<h2>Hello World</h2>")) 

(defn -main [] 
    (ring/run-jetty #'routes {:port 8080 :join? false})) 

बिल्कुल #' क्या मतलब है प्रदान करता है? मैं जानता हूँ कि किसी भी तरह यह routes का मूल्य हो रही है लेकिन तुम क्यों नहीं बस कह सकते हैं

(ring/run-jetty routes {:port 8080 :join? false})) 

#' एक अंगूठी विशिष्ट वाक्यविन्यास है? इस मामले पर कोई अच्छा संसाधन नहीं मिला।

+2

देखें http://stackoverflow.com/questions/10945187/is-pound-quote-hash-quote-in-clojure-running-the-resolve-and-symbol-functi – MicSokoli

उत्तर

6

#'sym(var sym) तक फैलता है।

एक var का उपयोग एक दूसरे के रूप में किया जा सकता है क्योंकि कार्य इसे बाध्य करता है। हालांकि, एक var का आह्वान परिभाषित कार्य को गतिशील रूप से हल करता है और फिर उसे आमंत्रित करता है।

इस मामले में यह विकास उद्देश्यों को पूरा करती है: इसके बजाय मूल्य द्वारा हैंडलर समारोह routes पास करने का, वर यह पारित हो जाता है, ताकि जेट्टी के बाद आप बदल सकते हैं और फिर से मूल्यांकन shouter.web/routes पुन: प्रारंभ करने की जरूरत नहीं है बाध्य है।