1
爲了舉例,假設我在函數中包裝了一個StringBuilder,所以我可以在Clojure中更容易地使用它。我可以輕鬆地在緩衝區中創建函數調用toString的no-arg版本,例如,如何覆蓋Clojure函數的toString?
(defn builder
([^StringBuilder sb]
(fn
([] (.toString sb))
([& args]
(doseq [arg args]
(.append sb arg)))))
([] (builder (StringBuilder.))))
這是完全可行的,但是,我不知道我怎麼會只重寫的ToString()的函數本身,所以我可以返回的StringBuilder或者說我已經關閉了其他任何對象的狀態。