假设我在 Java 中有一个 for 循环:
for(Foo foo : foos){ do_something() }
现在假设我想将此列表迭代转换为惯用的 clojure。最好的方法是什么?我想返回一些我可以使用的东西,比如 foos 集合上的迭代器。
(doseq [foo foos]
(do-something))
是您的 Java 代码片段的惯用 Clojure 等价物。
至于返回一个迭代器,Clojure 的集合都是可序列化的Iterable
,因此您可以在 Clojure 和 Java 中以惯用的方式迭代它们。
这是错误的。我保留它,以便它为其他人提供有用的信息
(dorun (map (constantly (do-something)) foos))
总之,这将调用do-something
foos.xml 中的每个元素。 constantly
将忽略您传入的任何内容,并按照您的指示进行操作。