[英]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.