【发布时间】:2015-03-13 16:49:35
【问题描述】:
我有两个集合 x 和 y,它们都有不同数量的项目。我想循环通过x 并做一些有副作用的事情,同时循环通过y。我不想在循环通过x 时重复y。 doseq 和 for 都重复 y:
(for [x (range 5)
y ["A" "B"]]
[x y])
这会产生([0 "A"] [0 "B"] [1 "A"] [1 "B"] [2 "A"] [2 "B"] [3 "A"] [3 "B"] [4 "A"] [4 "B"])。
我想要的是会产生的东西:([0 "A"] [1 "B"] [2 "A"] [3 "B"] [4 "A"])。
背景,我有来自文件的行和core.async 频道(比如 5),我想将每一行放到我收藏中的下一个频道,例如:
(defn load-data
[file chans]
(with-open [rdr (io/reader file)]
(go
(doseq [l (line-seq rdr)
ch chans]
(>! ch l)))))
【问题讨论】:
标签: clojure core.async