如何在clojure中为文件中的每一行分配一个增量值
how to assign an incremental value to evey line in a file in clojure
我想读取一个文件,我想为文件中的每一行附加一个行号。所以结果应该是
[1 "line1"]
[2 "line2"]
[3 "line3"]
如何有效地做到这一点?
这是 line-seq
的一个很好的用例。
(require '[clojure.java.io :as io])
(with-open [f (io/reader (io/file "test-file"))]
(mapv vector (next (range)) (line-seq f)))
[[1 "line1"] [2 "line2"] [3 "line3"]]
我在这里使用 mapv
,因为懒惰和文件句柄等有限资源不能混用。
也许它不符合您的需要,但通用函数 map-indexed
值得了解:
(map-indexed
(fn [index line] [(inc index) line])
(line-seq f))
我想读取一个文件,我想为文件中的每一行附加一个行号。所以结果应该是
[1 "line1"]
[2 "line2"]
[3 "line3"]
如何有效地做到这一点?
这是 line-seq
的一个很好的用例。
(require '[clojure.java.io :as io])
(with-open [f (io/reader (io/file "test-file"))]
(mapv vector (next (range)) (line-seq f)))
[[1 "line1"] [2 "line2"] [3 "line3"]]
我在这里使用 mapv
,因为懒惰和文件句柄等有限资源不能混用。
也许它不符合您的需要,但通用函数 map-indexed
值得了解:
(map-indexed
(fn [index line] [(inc index) line])
(line-seq f))