在 ClojureScript 中,对来自 cljs.core 符号的 {{ns-unmap}} 并不将其从当前命名空间中排除。请注意,即使在通过解除映射后,函数和宏仍然存在。
要退出,请输入: :cljs/quit
这与 Clojure 的 {{ns-unmap}} 的行为不同。尝试使用未映射的符号时,请注意适当的错误。
Clojure 1.7.0-beta1 user=> (ns-unmap 'user 'when) ;; 宏 nil
某种方式下,ClojureScript 的 {{ns-unmap}} 需要添加符号到当前命名空间的 {{:excludes}} 集中。请注意,def 特殊形式已执行此操作(在显示警告之后)。
我们有两个解决方案。0001 扩展了 {{ns}} 形式的 {{:merge}} 行为以支持 {{:excludes}},然后在 {{ns-unmap}} 中使用。如果不想使用对 {{ns}} 的增强,补丁 0002 将 {{ns-unmap}} 更新直接更新为 {{:excludes}}。