可以使用cljc单文件宏定义来使用clojurescript吗?

ben*_*ben 9 macros conditional clojure clojurescript reader

我有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)
Run Code Online (Sandbox Code Playgroud)

list-macro编译cljs时,此表单失败并未定义; 如果我删除list-macro周围的:clj guard,那么在cljs编译中defmacro是未定义的.有办法吗?

Leo*_*hin 12

是的,有一种方法可以构建单个文件.

(ns cljc.core
  #?(:cljs (:require-macros [cljc.core :refer [list-macro]])))

#?(:clj
(defmacro list-macro [x y]
;; ...
Run Code Online (Sandbox Code Playgroud)

假设下一个CLJS编译器版本之一将自动导入.