【发布时间】:2012-08-13 09:28:02
【问题描述】:
我想在 Clojure 中处理一个大文本文件。
我需要一次处理 2 行。
我决定使用 for 循环,因此我可以使用以下绑定为每次传递拉 2 行(rdr 是我的读者):
[[line-a line-b] (partition 2 (line-seq rdr))]
(我很想知道其他方法来为每个循环迭代获取 2 行,但这不是我的问题的重点)。
当试图让循环工作(对这些测试使用更简单的绑定)时,我看到了以下我无法解释的行为:
为什么
(with-open [rdr (reader "path/to/file")]
(for [line (line-seq rdr)]
line))
触发流关闭异常
同时
(with-open [rdr (reader "path/to/file")]
(doseq [line (line-seq rdr)]
(println line)))
有效吗?
【问题讨论】:
标签: clojure