2012-01-12 22 views
9

Khi sử dụng repl, đôi khi bạn muốn hủy biến vì nó bằng cách nào đó cản trở lập trình của bạn (thường là xung đột không gian tên).Hủy biến trong clojure

Có cách nào để tiêu diệt biến trong clojure không?

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

Trả lời

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

thường dễ dàng hơn để sử dụng '* ns * 'than' 'user' ở đây, đặc biệt nếu bạn đang ở trong một không gian tên với một tên dài. – amalloy

+0

đã cứu tôi khỏi sự khởi đầu tẻ nhạt của trò đùa! Tuyệt vời! – claj

Các vấn đề liên quan