示例代码:
(def app
(-> #'handler
(ring.middleware.stacktrace/wrap-stacktrace)
(wrap-spy)))
Run Code Online (Sandbox Code Playgroud)
我不是 Clojure 专家,这#'让我感到困惑——那是什么?
这是一个名为 var-quote 的读取器宏。 #'x是相同的(var x)。
它的作用是为您提供对名为 的变量的引用x,而不是所引用的值x。在这种情况下,您要说的是“要调用的函数在handler”中,而不是“这里是要调用的函数”。这意味着您可以更新(在 repl 中重新定义) 的定义handler,即使您不更新应用程序的其余部分,ring 也会找到它。