什么是
(resolve...)
和(var...)
的区别?它们都接受一个符号并返回命名空间中的变量。看起来,resolve
是一个函数,它以引用语法作为参数,而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