cljc 单文件宏定义可以与 clojurescript 一起使用吗?
can cljc single-file macro definitions to work with clojurescript?
我让 clojurescript 成功地从其他名称空间导入宏。但我想知道 clojure 1.7 是否可以使用单文件构造 is/should,以便可以定义和使用宏。我试过的方法不起作用,但也许我在某处遗漏了一个细节。
(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)
编译 cljs 时此表单失败,list-macro
未定义;如果我删除列表宏周围的 :clj 守卫,那么 defmacro 在 cljs 编译中是未定义的。有办法吗?
是的,有一种方法可以构建单个文件。
(ns cljc.core
#?(:cljs (:require-macros [cljc.core :refer [list-macro]])))
#?(:clj
(defmacro list-macro [x y]
;; ...
假设下一个 CLJS 编译器版本将自动导入。
我让 clojurescript 成功地从其他名称空间导入宏。但我想知道 clojure 1.7 是否可以使用单文件构造 is/should,以便可以定义和使用宏。我试过的方法不起作用,但也许我在某处遗漏了一个细节。
(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)
编译 cljs 时此表单失败,list-macro
未定义;如果我删除列表宏周围的 :clj 守卫,那么 defmacro 在 cljs 编译中是未定义的。有办法吗?
是的,有一种方法可以构建单个文件。
(ns cljc.core
#?(:cljs (:require-macros [cljc.core :refer [list-macro]])))
#?(:clj
(defmacro list-macro [x y]
;; ...
假设下一个 CLJS 编译器版本将自动导入。