Clojure 2024 年度调查! 中分享您的想法。

欢迎!请访问 关于 页面了解有关本网站的一些更多信息。

0 投票

在 Clojure 1.10.1 REPL 中键入 {:nil/a 1} 会打印出 #:nil{:a 1}

但是键入 #:nil{:a 1} 会引发以下错误

             java.lang.RuntimeException: Namespaced map must specify a valid namespace: null
clojure.lang.LispReader$ReaderException: java.lang.RuntimeException: Namespaced map must specify a valid namespace: null
             clojure.lang.ExceptionInfo: 
             java.lang.RuntimeException: Unmatched delimiter: }
clojure.lang.LispReader$ReaderException: java.lang.RuntimeException: Unmatched delimiter: }
             clojure.lang.ExceptionInfo:

(clojure.edn/read-string (pr-str {:nil/a 1})) 使用以下异常失败

java.lang.RuntimeException: Namespaced map must specify a valid namespace: null

这也适用于其他命名空间

(clojure.edn/read-string (pr-str {:1/a 1}))
; => java.lang.RuntimeException: Namespaced map must specify a valid namespace: 1
(clojure.edn/read-string (pr-str {:true/a 1}))
; => java.lang.RuntimeException: Namespaced map must specify a valid namespace: true

这实际上并没有什么意义,因为 (clojure.edn/read-string ":true/a") 运行正常。

1 个答案

+1 投票
 
最佳回答

似乎这是一个错误,已在 https://clojure.atlassian.net/browse/CLJ-2567 上提交。

...