请分享您的想法,参与 2024 Clojure 状态调查!

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

+1
Clojure
重新标记

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

2 答案

0

你有具体的示例吗?你看到的并不是你预期的结果?

by
编辑 by
在下述脚本中,有一个被 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
by
...