如何逐行编写 EDN? (吐,散列图序列)

How can I write an EDN line by line? (spit, seq of hashmaps)

我有这样的数据

tab = ({"123" data} {"456" data} ... 

(无论如何,它是哈希图的惰性序列)。

我想把它逐行写入一个edn文件,所以我这样做了

(map (fn[x] (spit "test.edn" x :append true)) tab)

问题是我想在文件中包含这个:

{"123" data}
{"456" data}

但是好像是这样追加的

{"123" data}{"456" data}

有办法解决吗? 我想我必须添加 "newline" 但我不知道该怎么做,因为输入不是字符串。

谢谢!

抱歉,我终于找到了,希望它能帮助一些人,因为我没有在互联网上找到它(我的意思是没有简单的答案)。

(map (fn[x] (spit "test.edn" (str x "\n") :append true)) tab)

下午好。

(doseq [x tab]
  (spit "test.edn" (prn-str x) :append true))

因此,对于 tab 中的每个项目,将其转换为后跟换行符的可读字符串,然后将该字符串附加到 test.edn.

您不应该为此使用 map,原因如下:

  1. map 是懒惰的,因此不会打印整个序列,除非你强制它
  2. map 保留了序列的头部,这里只会浪费内存