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

欢迎!请参阅关于页面获取有关如何工作的更多信息。

+1
Clojure
重标记

clojure.pprint/print-table 调用 str 对 'cols' 进行操作,这应该真的使用 print-str 使得打印方法得到尊重吗?

2 个回答

0

您是否有具体的例子,您看不到您期望的输出?


编辑了
以下记录中,有一个针对ZonedDateTime的defmethod被print-table忽略,但被print-table2使用,print-table2使用(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
...