使用新的#:default.namespace{,,,}
语法编写的map没有附加文件位置元数据。
给定的代码
(require '[clojure.tools.reader :as reader])
(require '[clojure.tools.reader.reader-types :as reader-types])
(defn sample [s]
(with-open [r (java.io.StringReader. s)]
(meta (reader/read (reader-types/indexing-push-back-reader (reader-types/push-back-reader r) 1)))))
这个edn字面量无法解析带有位置元数据
(sample "#:ns{ :key :val }") ; => nil
与这两个不同,它们获得了期望的位置元数据
(sample "{ :key :val }") ; => {:line 1, :column 1, :end-line 1, :end-column 14}
(sample "{ :ns/key val }") ; => {:line 1, :column 1, :end-line 1, :end-column 16}