我试图在Clojure中迭代一行"行".基本上,它看起来像:
[{:start {:x 1 :y 3 :z 4}, :end {:x 3 :y 7 :z 0}}, ...]
Run Code Online (Sandbox Code Playgroud)
我想应用一个函数,将每个"行"打印到一个新行,ala:
(map #(println %) vector-of-lines)
Run Code Online (Sandbox Code Playgroud)
但这似乎没有调用该函数.我不应该在这个例子中使用"map"功能吗?
Jul*_*ang 16
(dorun (map println vector-of-lines))
Run Code Online (Sandbox Code Playgroud)
dorun强制评估惰性序列,但也丢弃序列中每个项目的单个结果.这非常适合纯粹用于副作用的序列,这正是您想要的.
Jus*_*mer 15
map是懒惰的,除非你要求,否则不会实现结果.如果要对序列中的每个元素执行副作用,并且不关心返回值,请使用doseq:
;; returns nil, prints each line
(doseq [line vector-of-lines]
(println line))
Run Code Online (Sandbox Code Playgroud)
如果您确实关心返回值,请使用(doall):
;; returns a sequence of nils, prints each line
(doall (map println vector-of-lines))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5062 次 |
| 最近记录: |