【发布时间】:2011-04-06 17:54:55
【问题描述】:
我经常需要在 clojure 中取消定义一个函数。如果我用 defn 定义了一些东西,我该如何取消它?
【问题讨论】:
标签: clojure
我经常需要在 clojure 中取消定义一个函数。如果我用 defn 定义了一些东西,我该如何取消它?
【问题讨论】:
标签: clojure
没有单参数版本,因为同一个 Var 可以映射到多个命名空间中。如果您使用 REPL 工作,您通常希望从用户命名空间解除绑定,例如
(ns-unmap 'user 'symbol-to-unbind)
ns-unmap 的第一个参数可以是符号或命名空间,第二个参数应该是符号。
【讨论】:
'user/symbol-to-unbind?
我认为,您可以使用 ns-unmap 来执行此操作。
附:无法将此代码添加到评论中,所以我把它放在这里。要在当前命名空间中取消映射函数,您需要使用以下代码:
(ns-unmap *ns* 'method)
【讨论】:
如果你有:
(def x 42)
取消绑定 var 可能很有用:
(.unbindRoot #'x)
现在,如果你试试这个
x
你得到:
#<Unbound Unbound: #'user/x>
【讨论】: