2

私はこのようにしています:

(coll? (map #(println (.toString %)) java-objects))

関数は を返すTRUE必要があるため、このcoll?述語を使用します。より良い、よりエレガントな方法があると思いますか?

ps。そして、この関数は「怠惰」であるため、機能しません。コレクション内のすべての要素を調べて、それぞれで何かを行う正しい方法をお勧めできますか?

4

2 に答える 2

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)
于 2013-01-08T14:56:17.657 に答える
1

式の値が必要なく、副作用だけが必要な場合は、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.
于 2013-01-08T15:18:05.830 に答える