我有一条记录,一个实例,我将其打印到 EDN 字符串:
(ns my)
(defrecord Ref [type id])
(def rich (->Ref :Person 42)
(pr-str rich)
我想要
"#my.Ref [:Person 42]
。
但是我明白了
"#my.Ref{:type :Person, :id 23}"
。
如何插入自定义实现来打印
Ref
的实例?
在 CLJS 中,这是通过
cljs.core/IPrintWithWriter
协议完成的。
(extend-type Ref
IPrintWithWriter
(-pr-writer [this writer opts]
(-write writer "#my.Ref ")
(-pr-writer [(:type this) (:id this)] writer opts)))
在 CLJ 中,这是通过
clojure.core/print-method
多种方法完成的。
(defmethod print-method Rec [this writer]
...)