2016-05-11 12 views
5

私はこのチュートリアルの後にしますbuilding a Clojure backend と私はClojureに精通していません。Clojure何を意味するのですか

チュートリアルでは#'が正確に何を意味するのでしょうか?このソースファイル

(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-funccti – MicSokoli

答えて

6

#'symは、(var sym)に展開されます。

varは、バインドされた関数として互換的に使用できます。しかし、varを呼び出すと、定義された関数が動的に解決されてから呼び出されます。

routesを値で渡す代わりに、shouter.web/routesを変更して再評価した後にJettyを再起動する必要がないように、バインドされたvarが渡されます。

関連する問題