根据我的理解,Clojure的pr
函数打印对象,以便在读取时会与原始对象等于=
。我的主要信息来源是Clojure核心开发者Stuart Sierra的演讲https://youtu.be/pbodL96HM28?t=216(我找不到任何关于pr提供的保证的文档)。
如果这是正确的,那么pr
对于java.sql.Timestamp和java.util.Calendar不起作用。例如,这返回false。
(let [d (java.sql.Timestamp. 1)]
(= d
(read-string
(pr-str d))))
此外,Clojure文档表示,当print-dup为true时,意味着“对象将以保留其类型的方式打印,以便稍后读取”
对于java.sql.Timestamp和java.util.Calendar并不适用
`
(binding [*print-dup* true]
(prn (java.sql.Timestamp. 1)))
=> #inst "1970-01-01T00:00:00.001000000-00:00"
除了回答上述问题外,了解这些问题可能会为Clojure支持的java.time日期类型(由https://clojure.atlassian.net/browse/CLJ-2224跟踪)提供一些基础。
我明白上述行为可以通过用户进行更改,但我询问的是默认实现。