是否有一个用于Clojure和Clojurescript的宏,允许您根据文件是在Clojure还是ClojureScript中编译而插入不同的表达式?
(if-clojurescript
(my clojurescript definition)
(my clojure definition))从本质上讲,我正在寻找一些类似于C/C++代码中可能会看到的#ifdef SOME_PLATFORM宏。我认为它对于我希望成为交叉的一部分的文件可能很有用,但是对于那些文件的一小部分在Clojure/ClojureScript之间不兼容的文件。
发布于 2015-10-27 06:32:35
这是Clojure1.7的一个新特性:Reader conditionals。
另请参阅Daniel Compton blog,例如:
#?(:clj (Clojure expression)
:cljs (ClojureScript expression)
:clr (Clojure CLR expression))您可能还想看看macrovitch。
发布于 2013-03-02 03:09:29
你可以查看*clojure-version*
user> (if *clojure-version* "I'm Clojure" "I'm ClojureScript")
"I'm Clojure"
cljs.user> (if *clojure-version* "I'm Clojure" "I'm ClojureScript")
"I'm ClojureScript"如果您不能将语言中立位分割到它们自己的文件中(这是更可取的),这可能会很有用。我个人的观点倾向于避免使用太多这样的东西。
(defmacro if-clojurescript [clj-form cljs-form]
(if *clojure-version* clj-form cljs-form))发布于 2013-03-02 18:56:08
这不是一个真正的宏,而是一个Leiningen插件,它基于放置在源代码中的元数据注释生成Clojure或ClojureScript代码:cljx
https://stackoverflow.com/questions/15164939
复制相似问题