clojure - clojure与引用之间的区别是什么?

  显示原文与译文双语对照的内容

在Clojure中var和quote之间的含义差异? 例如 (var a)(quote a)

官方站点有下面的文档,但是var对象的区别和符号的值是什么? 我 am 。

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

时间: 原作者:

(quote a) 返回一个符号( clojure.lang.symbol ) - 它有效地与 'a 相同。 有关 Clojure读取器about的更多信息,可以更多地阅读一些符号。 例如:


(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 。

原作者:
...