2012-10-07 128 views
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或者說我已經關閉了其他任何對象的狀態。

回答