导致此错误的原因是什么?
(defmacro defn+
[name & stmts]
`(defn htrhrthtrh ~@stmts))
(defn+ init
[]
(js/alert "hi"))
-
java.lang.AssertionError: Assert failed: Can't def ns-qualified name
(not (namespace sym))
答案 0 :(得分:7)
htrhrthtrh
在输出中通过syntax-quote获得名称空间限定,因此结果类似于
(defn some.namespace/htrhrthtrh [] (js/alert "hi"))
这是不正确的,如异常消息中所述。
据推测,您可能希望使用~name
代替htrhrthtrh
在输出中包含名称参数defn+
;这个,或类似的任何东西,将解决问题。要硬连接这个确切的名称,您必须说~'htrhrthtrh
。