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

欢迎!请查看关于页面以了解更多此网站的工作方式。

+1
Clojure
重标记

clojure.pprint/print-table在处理'cols'时调用str,这应该使用print-str来尊重打印方法吗?

2 个答案

0

您有具体的例子吗,您期望看到的结果没有显示出来?


编辑
在下面的转述中,我们有一个被 print-table 忽略但被 print-table2 使用的 ZonedDateTime 的 defmethod,它使用 (print-str col) 而不是 (str col)

;; 隐藏时区位置
(defmethod print-method java.time.ZonedDateTime
  [v ^java.io.Writer w]
  (.write w "#inst \"")
  (.write w (.format v java.time.format.DateTimeFormatter/ISO_OFFSET_DATE_TIME))
  (.write w "\""))
=> #object[clojure.lang.MultiFn 0x7a030531 "clojure.lang.MultiFn@7a030531"]

(clojure.pprint/print-table […{∶a (java.time.ZonedDateTime/now)}]))

|                                              :a |
|-------------------------------------------------|
| 2021-04-17T20:55:56.794+12:00[Pacific/Auckland] |
=> nil

(print-table2 […{∶a (java.time.ZonedDateTime/now)}]))

|                                              :a |
|-------------------------------------------------|
|           #inst "2021-04-17T20:56:48.715+12:00" |
0
...