我有clojurescript从其他名称空间成功导入宏。但我想知道是否可以使用clojure 1.7进行单文件构造,以便可以定义和使用宏。我尝试过的东西不起作用,但也许我错过了某个地方的细节。
(ns cljc.core)
#?(:cljs
(enable-console-print!))
#?(:clj
(defmacro list-macro [x y]
`(list ~x ~y)))
(defn foo [a]
(println (list-macro a a)))
(foo :a)
此表单失败,编译clj时未定义list-macro
;如果我删除list-macro周围的:clj guard,那么在cljs编译中defmacro是未定义的。有办法吗?
答案 0 :(得分:13)
是的,有一种方法可以构建单个文件。
(ns cljc.core
#?(:cljs (:require-macros [cljc.core :refer [list-macro]])))
#?(:clj
(defmacro list-macro [x y]
;; ...
假设下一个CLJS编译器版本中的一个将自动导入。