通常我需要在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. 如何在Clojure中的函數中定義函數並引用該函數?
- 3. 如何在REPL中顯示Clojure中函數的定義?
- 4. 如何創建一個宏來定義clojure中的兩個函數
- 5. 如何在定義函數中添加一個定義
- 6. 未能在Clojure中定義一個類?
- 7. 如何定義一個常數函數
- 8. 如何在Clojure中創建一個負指數的冪函數?
- 9. 如何唯一標識一個給定的clojure函數?
- 10. 如何調用一個函數,它在python的另一個函數中定義?
- 11. 如何指定在clojure中使用哪個java函數?
- 12. 如何定義一個python函數
- 13. 如何定義一個javascript string.length()函數?
- 14. 如何定義一個函數
- 15. 如何定義一個getter函數
- 16. 如何正確定義一個函數?
- 17. 如何定義一個函數
- 18. 如何使用core.typed在Clojure中註釋一個函數?
- 19. 聲明函數返回取消定義
- 20. 如何在gnuplot中定義一個沒有參數的函數?
- 21. 如何在C函數中定義一個數組?
- 22. 在Lua中定義一個函數?
- 23. 在python中定義一個函數
- 24. 在Clojure中,是否可以在匿名函數中定義一個匿名函數?
- 25. 定義Clojure中
- 26. 匿名函數正在消耗另一個匿名函數 - clojure koan
- 27. 如何取消定義CONFIG_CMD_NET?
- 28. 如何在clojure中使用bean函數
- 29. 如何在Java中訪問clojure函數?
- 30. 在clojure中,我如何從命名空間中取消一個var?
當我使用(ns-unmap :: some-method)時,我得到java.lang.IllegalArgumentException。是否有一個參數版本? – Zubair 2011-04-06 18:07:48