【发布时间】:2020-12-08 10:16:33
【问题描述】:
我想要一个不分块 32 个元素的 sequence 版本。目前,此代码将输出
(def peek #(doto % (print " ")))
(def pause #(do (Thread/sleep 10)
%))
(take 2 (->> (range 100)
(sequence (comp (map peek)
(map pause)
(map inc)))))
;; prints 0 1 2 3 4 <..etc..> 32
;; => (0, 1)
我想要它的一个版本,以便它只遍历它需要的元素
(take 2 (->> (range 100)
(iter-sequence (comp (map peek)
(map pause)
(map inc)))))
;; prints 0 1
;; => (0, 1)
有没有办法做到这一点?
【问题讨论】:
-
我猜它有一些事情要做
iterate,但我也希望能够在它上面使用传感器。 -
见stackoverflow.com/questions/12412038/… - 特别是选择者的回应。
-
@cfrick - 这就是重点。我不想那样做。
-
@stefan。这不起作用,因为它仍然会生成一个序列。我希望它生成一个迭代器(就像序列一样)但不是分块版本。
-
@cfrick 如果将
take 2替换为first,它会打印32 个元素,因此罪魁祸首肯定是序列。
标签: clojure