读取器条件表达式允许读取器根据一组平台功能有条件地发出代码。
这是一个封闭集,但是目前,它是读取器实现细节的一部分。运行时代码不能访问当前的平台功能集。
当编写一个需要根据编译的代码平台有条件地发出代码的宏时,就会出现问题。由于宏总是在 Clojure 中读取,因此读取器条件本身就不起作用。
我们应该启用某种机制以在运行时检索当前平台,或者在至少在宏展开时进行检索。
例如,这应该是可能执行的操作类型
`
(defmacro mymacro []
(if (*platforms* :clj)
`(some-clojure-thing)
`(some-cljs-thing)))
`