31

在 clojure 中,我有这样的行来定义默认值:

(def *http-port* 8080)

我现在决定将这些类型的值形式化为一个配置单元,并且我想取消定义该值*http-port*,以便我可以找到仍然引用该值的位置并将它们更改为使用新值。换句话说,我正在通过将值移动到不同的位置来进行重构。

我一直这样做的方式是退出粘液并尝试重新启动粘液会话。在 maven 的编译阶段,会发现类似这样的错误,我可以一次找到并修复一个参考。然后我修复错误,冲洗并重复。这显然令人沮丧。

连接到粘液会话时我将如何执行此操作?

4

1 回答 1

41

如果我理解正确,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)
于 2010-11-17T20:20:29.607 回答