小编Mar*_*hko的帖子

为什么我不能使用Clojure声明命名空间和方法

我尝试在clojure中编写一个宏来设置命名空间并自动添加一些方法.我的宏没有工作,我将其跟踪到一个do语句.在do中声明一个新的命名空间是不可能的,然后立即在该命名空间中声明一个方法.为什么?

这不起作用:

(ns xyz)
(do
  (ns abc)
  (prn *ns*)
  (defn tst[] (prn "test" *ns*)))

(prn "after" *ns*)
(tst)
Run Code Online (Sandbox Code Playgroud)

这工作(do之前的名称空间声明):

(ns xyz)
(ns abc)
(do
  (prn *ns*)
  (defn tst[] (prn "test" *ns*)))

(prn "after" *ns*)
(tst)
Run Code Online (Sandbox Code Playgroud)

感谢阅读,马库斯

namespaces clojure

4
推荐指数
1
解决办法
243
查看次数

标签 统计

clojure ×1

namespaces ×1