为 clojurescript 添加自定义打印方法

Adding a custom print method for clojurescript

为了自定义打印记录,我通常会添加一个打印方法:

(defrecord Op [type value]
  Object
  (toString [op]
    (str [type value])))

(defmethod print-method Op
  [v w]
  (.write w (str v)))

但是当我使用 clojurescript 时,出现错误:

Use of undeclared Var synchrony.operation/print-method at line 11

我如何在 cljs 中执行此操作?

我认为在 ClojureScript 中执行此操作的方法是将 IPrintWithWriter 协议扩展到您的对象,例如

(extend-protocol IPrintWithWriter
  mycool.newObj
  (-pr-writer [new-obj writer _]
    (write-all writer "#myObj \"" (:details new-obj) "\"")))

我找不到太多关于此的官方文档,所以可能有 another/better 方法可以做到这一点。