假设我在Java中有一个for循环:
for(Foo foo : foos){ do_something() }
现在让我说我想将这个列表迭代翻译成惯用的clojure。什么是最好的方式?我想在foos集合中返回一些我可以像迭代器一样使用的东西。
答案 0 :(得分:5)
(doseq [foo foos]
(do-something))
是您的Java代码段的惯用Clojure。
至于返回迭代器,Clojure的集合都是Iterable
和seqable,所以你可以在Clojure和Java中以惯用的方式迭代它们。
答案 1 :(得分:0)
这是错误的。我保留了它,以便它为其他人提供有用的信息
(dorun (map (constantly (do-something)) foos))
Here's the definition of map
和here's the definition of constantly
。
总之,这将为foos中的每个元素调用do-something
。 constantly
会忽略您传入的任何内容,只是执行您告诉它的操作。