有时,在查看其他人的 Clojure 代码时,我会看到一个通过定义的函数defn
,然后使用 var-quote 语法调用,例如:
user> (defn a [] 1)
#'user/a
user> (a) ; This is how you normally call a function
1
user> (#'a) ; This uses the var-quote syntax and produces the same result
1
对于我的生活,我无法弄清楚这两种调用函数的方式之间的区别。我在评估文档中找不到任何内容来说明当呼叫的操作员是 var 时会发生什么,这可能表明为什么首选第二种形式。binding
他们似乎都对分配和语法引用做出了相同的反应。
那么,有人可以提供一个代码示例来说明两者之间的区别(a)
吗(#'a)
?
编辑:我知道 var-quote 可用于获取被let
词法绑定遮蔽的 var,但在我正在查看的代码中似乎并非如此。