假设我有一个X.clojurescript和一个X.clojure名称空间,X.clojurescript中的所有内容都是Clojurescript代码,X.clojure中的所有内容都是Clojure代码。不幸的是,我不能直接在Clojurescript中定义宏,我必须在Clojure中定义它们,然后使用"bring them into a Clojurescript namespace"将它们带入Clojurescript命名空间。
(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端创建另一个命名空间,在其中为X.clojurescript.abc的我的Clojure版本定义一个虚拟的y;有点愚蠢。
如何处理需要引用Clojurescript侧某些东西的宏?