gpt4 book ai didi

clojure - var 和 quote 有什么区别?

转载 作者:行者123 更新时间:2023-12-02 03:42:17 25 4
gpt4 key购买 nike

Clojure 中 var 和 quote 之间的含义有何区别?例如,(var a)(quote a)

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

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

最佳答案

(quote a) 返回一个符号 (clojure.lang.Symbol) - 它实际上与 'a 相同。值得多读一点关于 Clojure reader 的内容。了解有关符号的更多信息。示例:

(quote a)
=> a

(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

这是技术定义 - 但这是其背后的直觉:符号是一个名称,可用于在给定 namespace 中查找 var。 var 本身是一种引用,可以保存任何类型的 Clojure 值。因此,符号标识包含值的 var。

关于clojure - var 和 quote 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6079818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com