2011-04-06 13 views

Respuesta

7

Si usted tiene:

(def x 42) 

Podría ser útil para desenlazar el var:

(.unbindRoot #'x) 

Ahora, si usted intenta esto

x 

Se obtiene:

#<Unbound Unbound: #'user/x> 
15

Creo que se puede usar ns-unmap para hacer esto.

P.S. No se pudo agregar este código en el comentario, así que lo puse aquí. Para desasignar la función de espacio de nombres actual, es necesario utilizar siguiente código:

(ns-unmap *ns* 'method) 
+0

Obtengo java.lang.IllegalArgumentException cuando uso (ns-unmap :: some-method). ¿Hay una versión de un argumento? – Zubair

36

No existe una versión de un solo argumento, ya que la misma Var se puede mapear en más de un espacio de nombres. Si trabaja desde REPL, a menudo desea desvincularse del espacio de nombres de usuario, p.

(ns-unmap 'user 'symbol-to-unbind) 

El primer argumento para ns-unmap puede ser un símbolo o un espacio de nombres, y el segundo argumento debe ser un símbolo.

+1

Cualquier razón por la cual ns-unmap no puede tomar un solo símbolo calificado, p. ''usuario/symbol-to-unbind'? – mikera

Cuestiones relacionadas