3
我有兩個系列x
和y
,都有不同數量的項目。我想通過x
循環,並做一些副作用,而通過y
騎自行車。我不想在通過x
循環時重複y
。既doseq
和for
重複y
:Clojure:在循環另一個集合的同時循環一個集合?
(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)))))
因此,我將不得不採取的這個結果,然後doseq在它把它放入渠道? – arnab 2015-03-13 17:09:41
是的。我個人認爲,我喜歡將數據生成保存在自己的函數中,這樣我就可以獨立於移動它的機制來進行測試。 – 2015-03-13 17:11:37
是的,最終我想保持我所有的功能都是純粹的,並且有一層可以管理頻道推送和拉取的功能,所以這是有效的。 – arnab 2015-03-13 17:13:22