Mic*_*ent 28
user> (resolve 'foo)
nil
user> (def foo 3)
#'user/foo
user> (resolve 'foo)
#'user/foo
Run Code Online (Sandbox Code Playgroud)
resolve或者ns-resolve可以做你想要的:
user> (def a 1)
#'user/a
user> (def b)
#'user/b
user> (resolve 'a)
#'user/a
user> (resolve 'b)
#'user/b
user> (resolve 'c)
nil
Run Code Online (Sandbox Code Playgroud)
要获得布尔值:
user> (boolean (resolve 'b))
true
Run Code Online (Sandbox Code Playgroud)
编辑:根据MayDaniel的评论,这不是你要求的,但它会让你到那里.这是bounded?(可能不是最好的名字)的实现:
(defn bounded? [sym]
(if-let [v (resolve sym)]
(bound? v)
false))
user> (map bounded? ['a 'b 'c])
(true false false)
Run Code Online (Sandbox Code Playgroud)