假设我有一个 X.clojurescript 和一个 X.clojure 命名空间。X.clojurescript 中的所有内容都是 Clojurescript 代码,X.clojure 中的所有内容都是 Clojure 代码。不幸的是,我不能直接在 Clojurescript 中定义宏,我必须在 Clojure 中定义它们,然后使用
(ns X.clojurescript.abc
(:require-macros [X.clojure.def :as clj]))
这可以。但是,如果宏(在 X.clojure 中定义)需要引用在 Clojurescript 命名空间(X.clojurescript)中定义的东西怎么办?问题是 Clojure 编译器在解析其他命名空间时不会查看我的 Clojurescript 命名空间(一个单独的目录)。
我通过简单地在我的 Clojure 代码中创建一个名称空间来解决这个问题,该名称空间与 Clojurescript 中存在的名称空间和所需定义相同,但这似乎有点愚蠢。因此,例如,如果我在宏中需要 X.clojurescript.abc.y,我将在 Clojure 端创建一个额外的命名空间,在我的 Clojure 版本的 X.clojurescript.abc 中定义一个虚拟 y;有点笨。
如何处理需要在 Clojurescript 端引用某些内容的宏?