В clojure, как я могу отменить var из пространства имен?
В clojure у меня есть такие строки, которые определяют значения по умолчанию:
(def *http-port* 8080)
Теперь я решил формализовать эти значения в блок конфигурации, и я хотел бы определить значение *http-port*
, чтобы я мог найти местоположения, которые все еще ссылаются на это значение, и изменить их для использования нового значения, Я делаю рефакторинг другими словами, перемещая значение в другое место.
То, как я делаю это, - это выйти из слизи и попытаться перезапустить сеанс слизи. Во время компиляции фазы maven, например, они собираются, и я могу найти и исправить одну ссылку за раз. Затем я исправляю ошибку, промываю промывку и повторяю. Это явно разочаровывает.
Как мне это сделать при подключении к сеансу слизи?
Ответы
Ответ 1
Если я правильно вас понимаю, ns-unmap
должен делать то, что вы хотите:
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)