请在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代码的方式吗?
是的,查看org.clojure/tools.reader包和cljs.tools.reader命名空间。在使用ClojureScript时始终可用,因为ClojureScript自身就使用它。
...