欢迎!请参阅 关于 页面以了解有关此信息的工作原理的更多信息。
更新:我已将此问题作为一个问题提出:https://clojure.atlassian.net/jira/software/c/projects/CLJS/issues/CLJS-3294
我正在尝试编写一个库,该库提供一组带标签的字面量(及其读取函数),以便从 clojure 和 clojurescript 中使用。
data_readers.cljc
{foo/bar my.project.foo/bar}
my/project/foo.cljc
(ns my.project.foo) (defn bar [x] #?(:clj (str "hello! " x) :cljs (clj->js x)))
命令行
clj --main cljs.main -e "(println #foo/bar \"world\")"
输出 "hello, world"
clojurescript 编译并执行 bar 读取函数中的 :clj 分支 - 根据我的理解,在读取器中无法执行 cljs 代码。我还尝试了有一个 my/project/foo.cljs(即只有 cljs)的文件 - 但这也不起作用。
my/project/foo.cljs
我已经尝试使用一种权宜之计,其中读取器函数返回一个形式,请参阅 https://github.com/henryw374/time-literals/blob/master/src/time_literals/data_readers.cljc,这工作得很好,但问题是,现在这些读取函数在使用 clojure 时不起作用了(例如,使用 clojure.core/read-string) - 请参阅 https://github.com/henryw374/time-literals/issues/3
谢谢,Henry
这是 ClojureScript 中的一个 bug。Clojure 支持在 data_readers.cljc 中使用读取条件,ClojureScript 也应该做同样的事情。任务 https://clojure.atlassian.net/jira/software/c/projects/CLJS/issues/CLJS-3294