Clojure:返回一个java for循环的Iterator

时间:2013-05-01 21:44:17

标签: java for-loop clojure iterator

假设我在Java中有一个for循环:

 for(Foo foo : foos){ do_something() }

现在让我说我想将这个列表迭代翻译成惯用的clojure。什么是最好的方式?我想在foos集合中返回一些我可以像迭代器一样使用的东西。

2 个答案:

答案 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 maphere's the definition of constantly

总之,这将为foos中的每个元素调用do-somethingconstantly会忽略您传入的任何内容,只是执行您告诉它的操作。