2010-11-17 15 views
23

varsayılan değerleri tanımlamak böyle hatları: Şimdi bir yapılandırma birimine değerlerin bu tür resmileştirmek karar verdikclojure'da, bir ad alanından nasıl bir türevi kaldırabilirim? Clojure içinde

(def *http-port* 8080) 

ve ben bulabilmesi değerini *http-port* tanımsız istiyorum Bu değere hala referans veren ve yeni değeri kullanacak şekilde değiştiren yerler. Diğer bir deyişle değeri başka bir yere taşıyarak bir refactoring yapıyorum.

Bunu yapmamın yolu balçıktan çıkıp slime oturumunu yeniden başlatmayı denemektir. Maven'in derleme aşaması sırasında bunlar gibi hatalar alınır ve bir referansı bir seferde bulabilir ve onarabilirim. Ardından hatayı düzeltir, durulayın ve tekrarlayın. Bu açıkça sinir bozucu.

Bunu bir balçık oturumuna bağlıyken nasıl yaparım? Ben doğru anlamak

cevap

33

, ns-unmap istediğini yapmalıdır:

user=> foo 
java.lang.Exception: Unable to resolve symbol: foo in this context (NO_SOURCE_FILE:1) 
user=> (def foo 1) 
#'user/foo 
user=> foo 
1 
user=> (ns-unmap (find-ns 'user) 'foo) 
nil 
user=> foo 
java.lang.Exception: Unable to resolve symbol: foo in this context (NO_SOURCE_FILE:1) 
+7

Diğer ad hala 'foo değerine başvurular tutabilir. –

+2

@Jurgen bu doğru, ancak çözüm hiçbir şeyden daha iyidir –

+0

Sadece hatırlamak için: varsayılan ad alanı 'clojure.core –

İlgili konular