Clojure中var和quote之间的区别是什么?例如,(var a)和(quote a).
官方网站有以下文件,但var对象和符号的值有什么区别?我很迷惑.
(var symbol)符号必须解析为var,并返回Var对象本身(不是其值)
mik*_*era 17
(quote a)返回一个符号(clojure.lang.Symbol) - 它有效地做了同样的事情'a.值得一读Clojure读者,了解更多有关符号的信息.例:
(quote a)
=> a
Run Code Online (Sandbox Code Playgroud)
(var a)返回当前名称空间中符号a表示的var(clojure.lang.Var).如果未在当前命名空间中定义a,则会收到错误.例:
(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
Run Code Online (Sandbox Code Playgroud)
这是技术定义 - 但这是它背后的直觉:符号是一个名称,可用于查找给定命名空间中的var.var本身是一种可以保存任何类型的Clojure值的引用.因此,符号标识包含值的var.
| 归档时间: |
|
| 查看次数: |
1667 次 |
| 最近记录: |