我常常需要在clojure中取消定义一个函数。如果我用defn定义一些东西我怎么能取消它呢?
答案 0 :(得分:38)
没有单参数版本,因为可以在多个名称空间中映射相同的Var。如果您使用REPL,则通常需要取消绑定用户命名空间,例如
(ns-unmap 'user 'symbol-to-unbind)
ns-unmap的第一个参数可以是符号或命名空间,第二个参数应该是符号。
答案 1 :(得分:19)
我认为您可以使用 ns-unmap 来执行此操作。
P.S。无法将此代码添加到评论中,所以我把它放在这里。要取消映射当前命名空间中的函数,您需要使用以下代码:
(ns-unmap *ns* 'method)
答案 2 :(得分:7)
如果你有:
(def x 42)
取消绑定var:
可能很有用(.unbindRoot #'x)
现在,如果你试试这个
x
你得到:
#<Unbound Unbound: #'user/x>