私は多くの大きな地図やその他のものを含むアプリケーションを持っていますが、印刷すると読みにくいので、それら用のカスタム印刷関数を作成しprint-method
、次のように呼び出すように設定しました:
(defmethod print-method clojure.lang.PersistentArrayMap [v ^java.io.Writer w]
(.write w (fstr1 v)))
内部fstr1
で、マップが特別な処理を必要とする種類のものではないと判断した場合、通常の print-method をどのように呼び出すことができますか?
この回答:type
は、メタデータにa を入れることを提案print-method
しています。私はそれである程度成功しましたが、常にメタデータを制御できるとは限らないため、以前に定義された print-method 内から「転送」する方法があることを願っていますfstr1
。
参考までに、私の現在の実装は次のfstr1
とおりです。
(defn fstr1 ^String [x]
(cond
(ubergraph? x)
(fstr-ubergraph x)
(map? x)
(case (:type x)
:move (fstr-move x)
:workspace "(a workspace)"
:bdx (fstr-bdx x)
:rxn (fstr-rxn x)
(apply str (strip-type x)))
:else
(apply str (strip-type x))))