2
在Clojure中將數據結構寫入磁盤的最習慣的方式是什麼,所以我可以用edn/read讀回它?我嘗試以下,建議在Clojure cookbook:將大數據結構作爲EDN寫入clojure中的磁盤
(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))
來完成,但後來我必須在序列的開頭和結尾手動添加parens以獲得所需的結果。
對於大型數據結構,使用'(pr-str)'是個好主意;它會將它打印到內存中的字符串,這可能比原始結構佔用更多內存。我會簡單地在OP代碼中添加'* print-length *'nil綁定到綁定向量。 – 2014-11-21 15:19:10
我的'* print-length *'被設置爲100.罪魁禍首似乎是emacs live。見http://stackoverflow.com/questions/20300594/clojure-pr-str-cutting-off-lists-100-items – pholz 2014-11-21 15:22:33
@DiegoBasch好點。編輯。 – Kyle 2014-11-21 15:22:37