clojure/script将宏扩展为多个';def&x27;s在a';do';块

clojure/script将宏扩展为多个';def&x27;s在a';do';块,clojure,macros,clojurescript,Clojure,Macros,Clojurescript,不确定这个问题是否有效,但我正在学习宏,我正在尝试编写一个宏(对于clojurescript,但应该是一样的),以便在节点中更好地执行js/require 语法如下所示: (import ["some-module" :as module1] ["some-other-module" :as module2]) 它将扩展到: (do (def module1 (js/require "some-module") (def module2 (js/require "

不确定这个问题是否有效,但我正在学习宏,我正在尝试编写一个宏(对于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似乎没有抱怨,但从宏设计的角度来看,它可以吗?

是的,使用
(do(def…(def…)
模式通常是在宏扩展中实现多个事物的唯一方法