在clojure中,如何测试符号是否已被定义?
答
user> (resolve 'foo)
nil
user> (def foo 3)
#'user/foo
user> (resolve 'foo)
#'user/foo
答
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
取得布林:
user> (boolean (resolve 'b))
true
编辑:每MayDaniel的评论,这不正是你问什么,但它会得到你。下面是bounded?
实现(可能不是最好的名字):
(defn bounded? [sym]
(if-let [v (resolve sym)]
(bound? v)
false))
user> (map bounded? ['a 'b 'c])
(true false false)
答
可以使用发现-VAR这个
(bound? (find-var 'user/y))
+0
如果'y'在'user'中被绑定,返回空指针异常,因为'find- var'在这种情况下返回'nil'。 – Mars 2016-09-20 23:20:42
辉煌,曾第一次。谢谢! :) – Zubair 2010-11-16 20:53:48