2012-01-12 6 views
9

replを使用すると、何らかの理由でプログラミングの途中で(通常は名前空間の衝突)、変数を破棄したいことがあります。clojure内の変数を破棄します

clojureで変数を破壊する方法はありますか?

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

答えて

14

ns-unmap

通常
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

'使いやすいです*特にあなたが長い名前の名前空間にいる場合は、ここで '' user''よりも '' ns * – amalloy

+0

退屈なスワンクから私を救った!驚くばかり! – claj

関連する問題