2012-01-12 26 views
9

Yinelemeyi kullanırken, bazen bir değişkeni yok etmek istersiniz, çünkü bir şekilde programlamanızın yoluna girer (çoğu zaman ad alanı çarpışmaları).clojure değişkenini yok edin

Bir değişken clojure'yi yok etmenin bir yolu var mı?

user>(def x 1) 
#'user/x 
user>(aggressive-destroy! x) 
nil 
user>x 
Unable to resolve symbol: x in this context 
+0

http://stackoverflow.com/questions/5570826/how-can-i-undefine-a-function-in-clojure – wespiserA

cevap

14

ns-unmap

Genellikle
user=> (def my-var "this is my-var!") 
#'user/my-var 
user=> (println my-var) 
this is my-var! 
nil 
user=> (ns-unmap 'user 'my-var) 
nil 
user=> (println my-var) 
CompilerException java.lang.RuntimeException: Unable to resolve symbol: my-var in this context, compiling:(NO_SOURCE_PATH:13) 
user=> 
+6

'kullanımı daha kolay * ns * '' '' '' '' '' dır, özellikle uzun bir isimle bir isim isminde iseniz. – amalloy

+0

beni küfürün can sıkıcı yeniden başlatmasından kurtardı! Korku veren! – claj