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

欢迎!请参阅 关于 页面了解更多有关此页面如何工作的信息。

+1
ClojureScript
编辑
 => (cljs.reader/read-string "(re-matches #\".*ClojureScript \\d+\\.\\d+\\.\\d+ (.*)$\")")

Error: Unsupported escape character: \d.
    at new cljs$core$ExceptionInfo (/js/cljs-runtime/cljs.core.js:37198:10)
    at Function.eval [as cljs$core$IFn$_invoke$arity$3] (/js/cljs-runtime/cljs.core.js:37259:9)
    at Function.eval [as cljs$core$IFn$_invoke$arity$2] (/js/cljs-runtime/cljs.core.js:37255:26)
    at Function.eval [as cljs$core$IFn$_invoke$arity$variadic] (/js/cljs-runtime/cljs.tools.reader.impl.errors.js:52:25)
    at Function.eval [as cljs$core$IFn$_invoke$arity$variadic] (/js/cljs-runtime/cljs.tools.reader.impl.errors.js:92:47)
    at Object.cljs$tools$reader$impl$errors$throw_bad_escape_char [as throw_bad_escape_char] (/js/cljs-runtime/cljs.tools.reader.impl.errors.js:321:51)
    at Object.cljs$tools$reader$edn$escape_char [as escape_char] (/js/cljs-runtime/cljs.tools.reader.edn.js:470:38)
    at eval (/js/cljs-runtime/cljs.tools.reader.edn.js:485:39)
    at cljs$tools$reader$edn$read_string_STAR_ (/js/cljs-runtime/cljs.tools.reader.edn.js:488:3)

但是,在 clojure 中的相同输入

=> (read-string "(re-matches #\".*ClojureScript \\d+\\.\\d+\\.\\d+ (.*)$\")")

(re-matches #".*ClojureScript \d+\.\d+\.\d+ (.*)$")

还有

(cljs.reader/read-string "(re-matches #\"hello\")")

使用 cljs.reader/read-string 并不能读取,而 clojure read-string 则可以

1 个答案

+3

选择
 
最佳答案

cljs.reader 是一个纯 EDN 读取器。正则表达式(如 #"")不是 EDN 的部分,因此无法读取。当使用 clojure.edn/read-string 时也会失败。如果您想读取源代码,可以直接使用 tools-reader

感谢 Thomas!在 ClojureScript 中有阅读 Clojure 代码的工具吗?
...