3
示例代碼:#我在Ring應用程序中看到什麼?
(def app
(-> #'handler
(ring.middleware.stacktrace/wrap-stacktrace)
(wrap-spy)))
我不是專家的Clojure,這#'
令我感到困惑 - 那是什麼?
示例代碼:#我在Ring應用程序中看到什麼?
(def app
(-> #'handler
(ring.middleware.stacktrace/wrap-stacktrace)
(wrap-spy)))
我不是專家的Clojure,這#'
令我感到困惑 - 那是什麼?
這是一個reader macro called var-quote。 #'x
與(var x)
相同。
它能做什麼是給大家一個參考,以所謂x
的變量,而不是值通過x
簡稱。在這種情況下,您說要響鈴,「要調用的函數在handler
」而不是「這裏是調用的函數」。這意味着您可以更新(重新定義repl)handler
的定義,即使您不更新應用程序的其餘部分,ring也會找到它。
要查找像這樣的東西,你可以使用[symbolhound](http://symbolhound.com/?q=%23%27) –
這是一個[讀者宏](http://clojure.org/reader# [var](http://clojure.org/vars)-quote的%20Reader - Macro%20characters)。 –
它非常接近所提到的重複項。其中一個區別就是它特別要求環,這可能是很多人第一次遇到'#''。 「環」關鍵字(和標籤)可能會使這值得保留。 – overthink