2012-01-12 9 views
9

प्रतिलिपि का उपयोग करते समय, कभी-कभी आप एक चर को नष्ट करना चाहते हैं क्योंकि यह किसी भी तरह से आपके प्रोग्रामिंग (आमतौर पर नामस्थान टकराव) के रास्ते में मिलता है।क्लोजर में परिवर्तनीय को नष्ट करें

क्या क्लोजर में एक चर को नष्ट करने का कोई तरीका है?

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

आमतौर पर 'उपयोग करने के लिए आसान * एनएस * ''उपयोगकर्ता' से यहां, विशेष रूप से यदि आप लंबे नाम के साथ नामस्थान में हैं। – amalloy

+0

ने मुझे झुकाव के कठिन पुनरारंभ से बचाया! बहुत बढ़िया! – claj

संबंधित मुद्दे