【发布时间】:2009-08-25 19:04:45
【问题描述】:
我尝试在 clojure 中编写一个宏来设置命名空间并自动向其中添加一些方法。我的宏不起作用,我将其追踪到一个 do 语句。不可能在 do 中声明一个新的命名空间,然后立即在该命名空间中声明一个方法。为什么?
这不起作用:
(ns xyz)
(do
(ns abc)
(prn *ns*)
(defn tst[] (prn "test" *ns*)))
(prn "after" *ns*)
(tst)
这有效(在做之前的命名空间声明):
(ns xyz)
(ns abc)
(do
(prn *ns*)
(defn tst[] (prn "test" *ns*)))
(prn "after" *ns*)
(tst)
感谢阅读, 马库斯
【问题讨论】:
标签: clojure namespaces