通常我需要在clojure中取消定義一個函數。如果我用defn定義一些東西,我怎麼能不定義它呢?如何在Clojure中取消定義一個函數?
24
A
回答
7
如果您有:
(def x 42)
這可能是有用的解除綁定VAR:
(.unbindRoot #'x)
現在,如果你嘗試這種
x
你得到:
#<Unbound Unbound: #'user/x>
15
我想,你可以用ns-unmap來做到這一點。
P.S.無法將此代碼添加到評論中,所以我把它放在這裏。要取消映射功能在當前的命名空間,你需要使用下面的代碼:
(ns-unmap *ns* 'method)
36
沒有一個參數的版本,因爲同樣的功能在多個命名空間被映射。如果您正在從REPL開始工作,則通常需要從用戶名稱空間解除綁定,例如
(ns-unmap 'user 'symbol-to-unbind)
ns-unmap的第一個參數可以是符號或命名空間,第二個參數應該是符號。
+1
爲什麼ns-unmap不能只取一個合格的符號,例如''用戶/符號 - unbind'? – mikera 2012-02-13 10:13:06
相關問題
- 1. 如何在Clojure中的函數中定義函數並引用該函數?
- 2. 如何在REPL中顯示Clojure中函數的定義?
- 3. 如何創建一個宏來定義clojure中的兩個函數
- 4. 如何定義一個常數函數
- 5. 如何在Clojure中創建一個負指數的冪函數?
- 6. 如何調用一個函數,它在python的另一個函數中定義?
- 7. 如何指定在clojure中使用哪個java函數?
- 8. 如何定義一個函數
- 9. 如何定義一個python函數
- 10. 如何定義一個getter函數
- 11. 聲明函數返回取消定義
- 12. 在Lua中定義一個函數?
- 13. 在Clojure中,是否可以在匿名函數中定義一個匿名函數?
- 14. 如何取消定義系統函數宏?
- 15. 在clojure中,我如何從命名空間中取消一個var?
- 16. 如何在Java中訪問clojure函數?
- 17. 如何在函數中定義一個類的靜態成員?
- 18. 如何在python函數中定義一個字符串?
- 19. 在Robo3T中,如何添加一個自定義函數
- 20. 如何在酶中定義一個函數類型prop?
- 21. 如何在全局可用的jQuery.ready中定義一個函數?
- 22. 有沒有辦法在emacs lisp中取消定義函數?
- 23. 定義一個宏的函數定義
- 24. let vs letfn在clojure中定義本地函數?
- 25. 在Clojure中定義函數僅用於測試
- 26. 如何在一行上定義一個函數
- 27. 如何從矩陣函數定義一個新函數?
- 28. Clojure:如何在運行時創建一個函數
- 29. 如何定義一個函數在Emacs上運行多個shell?
- 30. 如何在clojure中調用函數並獲取結果?
當我使用(ns-unmap :: some-method)時,我得到java.lang.IllegalArgumentException。是否有一個參數版本? – Zubair 2011-04-06 18:07:48