4

Clojure でデータ構造をディスクに書き込む最も慣用的な方法は何ですか? Clojure cookbookで推奨されているように、次のことを試しました。

(with-open [w (clojure.java.io/writer "data.clj")]
  (binding [*out* w]
    (pr large-data-structure)))

ただし、これは最初の 100 項目のみを書き込み、その後に "..." が続きます。私も試し(prn (doall large-data-structure))てみましたが、同じ結果が得られました。

を使用して行ごとに記述することでなんとかそれを行うことができました(doseq [i large-data-structure] (pr i))が、目的の結果を得るには、シーケンスの最初と最後に手動で括弧を追加する必要があります。

4

1 に答える 1

4

*print-length*を介して印刷されるコレクション内のアイテムの数を制御できます

ライターを手動で開く代わりにspitを使用し、 に手動でバインドする代わりにpr-str を使用することを検討してください*out*

(binding [*print-length* false]
  (spit "data.clj" (pr-str large-data-structure))

コメントから編集:

(with-open [w (clojure.java.io/writer "data.clj")]
  (binding [*print-length* false
            *out* w]
    (pr large-data-structure)))

:*print-length*には のルート バインドがあるnilため、上記の例ではバインドする必要はありません。最初の電話の時点での現在のバインディングを確認しprます。

于 2014-11-21T15:15:48.437 に答える