2011-04-06 54 views

回答

7

如果您有:

(def x 42) 

這可能是有用的解除綁定VAR:

(.unbindRoot #'x) 

現在,如果你嘗試這種

x 

你得到:

#<Unbound Unbound: #'user/x> 
15

我想,你可以用ns-unmap來做到這一點。

P.S.無法將此代碼添加到評論中,所以我把它放在這裏。要取消映射功能在當前的命名空間,你需要使用下面的代碼:

(ns-unmap *ns* 'method) 
+0

當我使用(ns-unmap :: some-method)時,我得到java.lang.IllegalArgumentException。是否有一個參數版本? – Zubair 2011-04-06 18:07:48

36

沒有一個參數的版本,因爲同樣的功能在多個命名空間被映射。如果您正在從REPL開始工作,則通常需要從用戶名稱空間解除綁定,例如

(ns-unmap 'user 'symbol-to-unbind) 

ns-unmap的第一個參數可以是符號或命名空間,第二個參數應該是符號。

+1

爲什麼ns-unmap不能只取一個合格的符號,例如''用戶/符號 - unbind'? – mikera 2012-02-13 10:13:06

相關問題