检查符号是否可以解析时,会出现一些奇怪的行为。Clojure:解析声明符号
user=> ok
CompilerException java.lang.RuntimeException: Unable to resolve symbol: ok in this context, compiling:(NO_SOURCE_PATH:0)
user=> (resolve 'ok)
nil
user=> (if (resolve 'ok) "bla" (def ok 'ok))
"bla"
user=> ok
#<Unbound Unbound: #'user/ok>
user=> (def ok 'ok)
#'user/ok
user=> ok
ok
谁能告诉我这可能来自哪里?这是行为的目的?
您使用的是什么版本的Clojure?我没有在1.2.1上看到这个 – spacemanaki 2012-01-14 18:11:59
@spacemanaki:有趣的是,我只是在1.2.1和1.3中都转载了这件事。 – 2012-01-14 19:24:36
我的错误,对'ok'的第二次引用导致了一个异常,而不是返回一个'#'对象,我没有注意。对我来说,在'if'里面的1.2.1'(解析'ok')确实会导致'ok'被声明。 –
spacemanaki
2012-01-14 20:42:48