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