不确定是否有效问题,但我正在学习宏,我正在尝试编写一个宏(对于clojurescript但应该是同样的事情)所以我可以在节点中做更好的js / require。
语法如下所示:
(import ["some-module" :as module1]
["some-other-module" :as module2])
它会扩展到:
(do
(def module1 (js/require "some-module")
(def module2 (js/require "some-module"))
我的问题是:
在do块中做'def'是否可以? cljs似乎没有抱怨,但从宏观设计角度来看它是否可以?
答案 0 :(得分:4)
是的,使用(do (def ...) (def ...))
模式通常是def
宏扩展中多个事物的唯一方法。