Son*_*oth 5 symbols var clojure
(resolve...)和之间有什么区别(var...)?它们都采用符号并返回命名空间中的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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1451 次 |
| 最近记录: |