5

ファイルがClojureまたはClojurescriptでコンパイルされているかどうかに応じて、異なる式を挿入できるようにするClojureおよびClojureScript用のマクロはありますか?

(if-clojurescript
   (my clojurescript definition)
   (my clojure definition))

#ifdef SOME_PLATFORM基本的には、C/C++ コードに散りばめられているマクロのようなものを探しています。クロスオーバーの一部にしたいが、そのファイルの一部が Clojure/ClojureScript 間で互換性がない場合に役立つと思います。

4

4 に答える 4

3

あなたはチェックすることができます*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-01T19:09:29.140 に答える
2

同じコードベースで Clojure のさまざまなバリアントをサポートするための一般的なメカニズムを実装するための機能式と呼ばれるいくつかの行き詰まった作業があります。

于 2013-03-01T20:44:36.400 に答える