我这样做:
(coll? (map #(println (.toString %)) java-objects))
该函数必须返回TRUE
,这就是这个coll?
谓词的原因。我认为有一种更好,更优雅的方式?
PS。而且这个功能不起作用,因为它是“懒惰的”。您能否推荐一种正确的方法来浏览集合中的所有元素,并对每个元素执行一些操作。
答案 0 :(得分:2)
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)
答案 1 :(得分:1)
如果您不需要表达式的值而只需要副作用,那么最好使用doseq
而不是map
:
(do (doseq [o java-objects]
(println (.toString o)))
true)
doseq
doc:
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.