1

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

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

现在假设我想将此列表迭代转换为惯用的 clojure。最好的方法是什么?我想返回一些我可以使用的东西,比如 foos 集合上的迭代器。

4

2 回答 2

5
(doseq [foo foos]
  (do-something))

是您的 Java 代码片段的惯用 Clojure 等价物。

至于返回一个迭代器,Clojure 的集合都是可序列化的Iterable,因此您可以在 Clojure 和 Java 中以惯用的方式迭代它们。

于 2013-05-01T22:15:06.083 回答
0

这是错误的。我保留它,以便它为其他人提供有用的信息

(dorun (map (constantly (do-something)) foos))

这是 的定义,map这里是 的定义constantly

总之,这将调用do-somethingfoos.xml 中的每个元素。 constantly将忽略您传入的任何内容,并按照您的指示进行操作。

于 2013-05-01T21:54:34.283 回答