当前pprint不打印defrecord类型的名称,而是只打印其底层的map。这与pr-str/println的行为形成对比。本条目提议更改pprint的行为,使其与pr-str和println的行为相匹配。
更多讨论请见
https://groups.google.com/forum/#!topic/clojure-dev/lRDG6a5eE-s
user=> (defrecord myrec [a b])
user.myrec
user=> (->myrec 1 2)
#user.myrec{:a 1, :b 2}
user=> (pr-str (->myrec 1 2))
"#user.myrec{:a 1, :b 2}"
user=> (println (->myrec 1 2))
#user.myrec{:a 1, :b 2}
nil
user=> (pprint (->myrec 1 2))
{:a 1, :b 2}
nil
*方法:* 向pprint的简单分配模式添加新的IRecord情况。从pprint-map中提取pprint-map-kvs的内部结构,然后从现有的pprint-map和新的pprint-record调用它。为IRecord版本设置多方法优先级。添加了测试。
user=> (pprint (->myrec 1 2))
#user.myrec{:a 1, :b 2}
*补丁:* CLJ-1890-pprint-records-2.patch
*预审:** Alex Miller
*另请参阅:* CLJS-1753