[英]How to override toString on a function in Clojure?
舉例來說,假設我將StringBuilder包裝在一個函數中,以便可以在Clojure中更輕松地使用它。 我可以輕松地在緩沖區上使函數調用toString的無參數版本
(defn builder
([^StringBuilder sb]
(fn
([] (.toString sb))
([& args]
(doseq [arg args]
(.append sb arg)))))
([] (builder (StringBuilder.))))
這是完全可行的,但是,我想知道如何在函數本身上覆蓋.toString(),以便返回StringBuilder或已關閉的任何其他對象的狀態。
您可以嘗試使用https://github.com/technomancy/serializable-fn ,這會使函數在打印時包括其封閉范圍。 但是,它將打印stringbuilder的pr-str,它可能與您想要的不一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.