我是这样做的:
(coll? (map #(println (.toString %)) java-objects))
函数必须返回TRUE
,这就是为什么这个coll?
谓词。我想有更好,更优雅的方式吗?
附言。而且这个功能不起作用,因为它是“懒惰的”。您能否推荐一种正确的方法来遍历集合中的所有元素并对每个元素进行处理。
我是这样做的:
(coll? (map #(println (.toString %)) java-objects))
函数必须返回TRUE
,这就是为什么这个coll?
谓词。我想有更好,更优雅的方式吗?
附言。而且这个功能不起作用,因为它是“懒惰的”。您能否推荐一种正确的方法来遍历集合中的所有元素并对每个元素进行处理。
http://clojuredocs.org/clojure_core/clojure.core/doall
(doall (map #(println (.toString %)) java-objects))
它会回报你
(nil nil nil ...)
如果你需要真的:
(do
(doall (map #(println (.toString %)) java-objects))
true)
如果您不需要表达式的值而只需要副作用,那么最好使用doseq
而不是map
:
(do (doseq [o java-objects]
(println (.toString o)))
true)
doseq
文档:
clojure.core/doseq
([seq-exprs & body])
Macro
Repeatedly executes body (presumably for side-effects) with
bindings and filtering as provided by "for". Does not retain
the head of the sequence. Returns nil.