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

欢迎!请参阅关于页面了解更多关于如何使用本网站的信息。

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

选择
 
最佳答案

这看起来像是bug,已提交给https://clojure.atlassian.net/browse/CLJ-2567

...