我在 Ring 应用程序中看到的 #' 是什么?

Teo*_*ing 3 clojure ring

示例代码:

(def app
  (-> #'handler
     (ring.middleware.stacktrace/wrap-stacktrace)
     (wrap-spy)))
Run Code Online (Sandbox Code Playgroud)

我不是 Clojure 专家,这#'让我感到困惑——那是什么?

ove*_*ink 5

这是一个名为 var-quote 的读取器宏#'x是相同的(var x)

它的作用是为您提供对名为 的变量的引用x,而不是所引用的x。在这种情况下,您要说的是“要调用的函数在handler”中,而不是“这里是要调用的函数”。这意味着您可以更新(在 repl 中重新定义) 的定义handler,即使您不更新应用程序的其余部分,ring 也会找到它。