例如,假设我将 StringBuilder 包装在一个函数中,以便在 Clojure 中更轻松地使用它。我可以轻松地在缓冲区上制作函数调用的无参数版本 toString ,例如
(defn builder
([^StringBuilder sb]
(fn
([] (.toString sb))
([& args]
(doseq [arg args]
(.append sb arg)))))
([] (builder (StringBuilder.))))
这是完全可行的,但是,我想知道如何在函数本身上覆盖 .toString() ,这样我就可以返回 StringBuilder 或我关闭的任何其他对象的状态。