2024 Clojure 状态调查中分享您的想法!

欢迎!请参阅关于页面以获得更多有关如何使用本站的信息。

0
语法和读取器

读取器条件允许根据一组平台特性有条件地发出代码。

这是一个封闭集 - 然而,目前它被嵌入到读取器的实现细节中。运行时代码无法访问当前的平台特性集。

当编写需要根据代码(正在编译)的平台有条件地发出代码的宏时,这是一个问题。由于宏总是由 Clojure 读取,因此读取器条件本身不会工作。

我们应该启用一些机制来在运行时或至少在宏展开时检索当前平台。

例如,这可能是在以下情况下可行的事情

`
(defmacro mymacro []

(if (*platforms* :clj)
  `(some-clojure-thing)
  `(some-cljs-thing)))

`

2 答案

0

评论由:slagyr

+1 - 非常希望看到它在 1.7 中。目前,我必须使用一个丑陋的技巧。

(def ^:private ^:no-doc cljs? (boolean (find-ns 'cljs.analyzer)))

0
参考:https://clojure.atlassian.net/browse/CLJ-1750 (由 lvanderhart 报告的)
...