1

例として、Clojureでより簡単に使用できるようにStringBuilderを関数でラップしたとします。バッファ上で引数なしバージョンの関数呼び出しtoStringを簡単に作成できます。

(defn builder
  ([^StringBuilder sb]
     (fn
       ([] (.toString sb))
       ([& args]
          (doseq [arg args]
            (.append sb arg)))))
  ([] (builder (StringBuilder.))))

これは完全に機能しますが、関数自体で.toString()をオーバーライドして、StringBuilderまたは閉じた他のオブジェクトの状態を返すことができるのではないかと思います。

4

1 に答える 1

1

https://github.com/technomancy/serializable-fnを使用してみてください。これにより、関数は印刷時にクローズドオーバースコープを含めることができます。ただし、stringbuilderのpr-strが出力されますが、これは正確に希望するものである場合とそうでない場合があります。

于 2012-10-07T05:58:11.747 に答える