gpt4 book ai didi

clojure - 在 clojure 中将大型数据结构作为 EDN 写入磁盘

转载 作者:行者123 更新时间:2023-12-02 11:13:10 25 4
gpt4 key购买 nike

在 Clojure 中将数据结构写入磁盘的最惯用方法是什么,以便我可以使用 edn/read 将其读回?我按照 Clojure cookbook 中的建议尝试了以下方法:

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

但是,这只会写入前 100 项,后面跟着“...”。我也尝试了 (prn (doall large-data-struct)) ,得到了相同的结果。

我已经成功地通过使用 (doseq [i large-data-struction] (pr i)) 逐行编写来做到这一点,但随后我必须在序列的开头和结尾以获得所需的结果。

最佳答案

您可以通过*print-length*控制集合中打印的项目数量。

<罢工>考虑使用spit而不是手动打开 writer 和 pr-str而不是手动绑定(bind)到 *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*根绑定(bind)为nil所以你不需要在上面的例子中绑定(bind)它。我会检查您原始 pr 时的当前绑定(bind)打电话。

关于clojure - 在 clojure 中将大型数据结构作为 EDN 写入磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27064337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com