clojure – var和quote之间有什么区别?

在Clojure中var和quote之间有什么区别?例如,(var a)和(引用a).

官方网站有以下文件,但是var对象和符号的值有什么区别?我很困惑.

(var符号)
符号必须解析为var,并返回Var对象本身(不是其值)

最佳答案
(引用a)返回一个符号(clojure.lang.Symbol) – 它有效地与’a’相同.值得一读更多关于Clojure reader,以了解更多关于符号.例:

(quote a)
=> a

(var a)返回由当前命名空间中的符号a表示的var(clojure.lang.Var).如果在当前命名空间中没有定义,则会收到错误.例:

(var a)
=> #<CompilerException java.lang.RuntimeException: Unable to resolve var: a in this context, compiling:(NO_SOURCE_PATH:1)>

(def a 1)
(var a)
=> #'user/a

这是技术定义 – 但是这里的直觉是:一个符号是一个名称,可用于在给定的命名空间中查找var. var本身是一种可以容纳任何种类的Clojure值的参考.因此,符号标识包含值的var.

转载注明原文:clojure – var和quote之间有什么区别? - 代码日志