gpt4 book ai didi

Clojure:resolve 和 var 有什么区别?

转载 作者:行者123 更新时间:2023-12-02 10:31:45 25 4
gpt4 key购买 nike

(resolve...)(var...) 有什么区别?它们都接受一个符号并返回命名空间中的 var。看起来解析是一个函数,它采用引号语法作为参数,而 var 是一种特殊形式,它采用在 repl 中键入的文字符号,但我不明白它们的使用方式有何不同。

user> (def my-symbol 2.71828182846)
#'user/my-symbol
user> (resolve 'my-symbol)
#'user/my-symbol
user> (type (resolve 'my-symbol))
clojure.lang.Var
user> (var my-symbol)
#'user/my-symbol
user> (type (var my-symbol))
clojure.lang.Var
user> (= (resolve 'my-symbol) (var my-symbol))
true

最佳答案

resolve 查找给定符号的 var(或类),并在运行时进行操作。 var 只是返回一个 var 并在编译时运行。 (var foo)#'foo

同义
(def foo "bar")
=> #'user/foo

(let [sym 'foo]
(resolve sym))
=> #'user/foo

(let [sym 'foo]
(var sym)) ;same as typing #'sym - doesn't actually refer to the sym local
=> Exception: Unable to resolve var: sym in this context

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

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