当检查符号是否可以解析时,我遇到了一些奇怪的行为。
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
有人能告诉我这可能来自哪里吗?这种行为是否被预期?
ok
导致异常而不是返回一个#<Unbound...>
对象,我没有注意到。对于我来说,在 1.2.1 版本中,if
内部的(resolve 'ok)
确实导致了ok
的声明。 - okonomichiyakibounded?
似乎可以解决你的问题。我在你的例子中用它替换了resolve
,并且它起作用了。至于这种行为,我希望我们能得到一个答案。 - Goran Jovic