假设您想跳过文件的第一行并像在 中那样处理剩余的行tile-image-across
,您可以简单地替换(line-seq rdr)
为
(next (line-seq rdr))
实际上,您可能应该考虑选择相关行和处理:
;; rename repeat-image to repeat-line
(defn read-image [rdr]
(next (line-seq rdr)))
(defn repeat-image! [n lines]
(doseq [line lines]
(repeat-line n line)))
在里面使用with-open
:
(with-open [rdr ...]
(repeat-image! (read-image rdr)))
相反,如果您的文件包含多个图像并且您需要跳过每个图像的第一行,那么最好的方法是编写一个函数来将行序列划分为图像序列(如何完成取决于格式您的文件),然后一遍又一遍地映射(line-seq rdr)
结果(map next ...))
:
(->> (line-seq rdr)
;; should partition the above into a seq of seqs of lines, each
;; describing a single image:
(partition-into-individual-image-descriptions)
(map next))
注意。使用惰性partition-into-individual-image-descriptions
这将产生惰性序列的惰性序列;您需要在with-open
关闭阅读器之前使用它们。