根据规范,def
应该在当前ns中实习var(即*ns*)。但是,以下代码看起来并不像它:
(ns namespace-b)
(defn def_something []
(ns namespace-a)
(println *ns*) ;prints namespace-a as it should
(def something 1)
)
(def_something)
(println namespace-b/something) ; prints 1
(println namespace-a/something) ; throws
我错过了什么?
笔记:
defn
只是为了清楚起见。定义和运行匿名函数也同样有效。- 我知道使用
def
内部函数可能不是很惯用。然而,这只是我遇到的一个更大问题的精华。