本文介绍了clojure:#'/(var ...)形式的用法是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在核心命名空间的 compojure库中,我看到以下内容形式:
In the compojure library in the core namespace, I see the following form:
(defn- compile-route
"Compile a route in the form (method path & body) into a function."
[method route bindings body]
`(#'if-method ~method
(#'if-route ~(prepare-route route)
(fn [request#]
(let-request [~bindings request#]
(render (do ~@body) request#))))))
(defmacro GET "Generate a GET route."
[path args & body]
(compile-route :get path args body))
在文件中, if-method
和 if-route
函数用 defn -
定义。
Further up in the file, the if-method
and if-route
functions are defined with defn-
s.
但对我来说,从defmacro调用),它只是听起来像这意味着符号的值将被返回,这与可替代性听起来像相同:
(def x 5)
(+ x 7)
-> 12
我在这里缺少什么?看了这一段时间后,我开始怀疑它与事实有关的事情,<$($)
推荐答案
c $ c> if-method 和 if-route
函数实际上是私有的((defn- if- 。)
)。
`(+ 2 3)
(clojure.core/+ 2 3)
由于这些方法是私有的, ,因此使用var函数来获取保存对在扩展中的该点必须调用的实际函数的引用的符号。
这篇关于clojure:#'/(var ...)形式的用法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!