2013-07-22 28 views
3

示例代碼:#我在Ring應用程序中看到什麼?

(def app 
    (-> #'handler 
    (ring.middleware.stacktrace/wrap-stacktrace) 
    (wrap-spy))) 

我不是專家的Clojure,這#'令我感到困惑 - 那是什麼?

+1

要查找像這樣的東西,你可以使用[symbolhound](http://symbolhound.com/?q=%23%27) –

+1

這是一個[讀者宏](http://clojure.org/reader# [var](http://clojure.org/vars)-quote的%20Reader - Macro%20characters)。 –

+2

它非常接近所提到的重複項。其中一個區別就是它特別要求環,這可能是很多人第一次遇到'#''。 「環」關鍵字(和標籤)可能會使這值得保留。 – overthink

回答

4

這是一個reader macro called var-quote#'x(var x)相同。

它能做什麼是給大家一個參考,以所謂x變量,而不是通過x簡稱。在這種情況下,您說要響鈴,「要調用的函數在handler」而不是「這裏是調用的函數」。這意味着您可以更新(重新定義repl)handler的定義,即使您不更新應用程序的其餘部分,ring也會找到它。

相關問題