clojure/script 将宏扩展为 'do' 块内的多个“def”
clojure/script expanding a macro into multiple 'def's inside a 'do' block
不确定问题是否有效,但我正在学习宏并且我正在尝试编写一个宏(用于 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 ...))
模式通常是在宏展开中 def
多个事物的唯一方法。
不确定问题是否有效,但我正在学习宏并且我正在尝试编写一个宏(用于 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 ...))
模式通常是在宏展开中 def
多个事物的唯一方法。