10

我有 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)

这种形式list-macro在编译 cljs 时由于未定义而失败;如果我删除列表宏周围的 :clj 保护,则在 cljs 编译中未定义 defmacro。有办法吗?

4

1 回答 1

14

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

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

#?(:clj
(defmacro list-macro [x y]
;; ...

假设下一个 CLJS 编译器版本将自动执行导入。

于 2015-04-28T19:39:38.920 回答