2012-01-12 17 views
9

Cuando usas el repl, a veces quieres destruir una variable porque de alguna manera se interpone en el camino de tu programación (la mayoría de las veces colisiones de espacios de nombres).Destruye la variable en clojure

¿Hay alguna forma de destruir una variable en 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

Respuesta

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

Por lo general, más fácil de usar '* ns * 'than' 'user' aquí, especialmente si estás en un espacio de nombres con un nombre largo. – amalloy

+0

me salvó del tedioso reinicio de swank! ¡Increíble! – claj

Cuestiones relacionadas