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](https://clojure.atlassian.net/browse/CLJ-1750)(由 lvanderhart 报告)
...