Question

J'ai des structures avec des séquences imbriquées imbriquées qui lisent des fichiers. Lorsque je teste, j'aimerais pouvoir les envelopper dans une version récursive de doall afin de m'assurer que toutes les données sont extraites des fichiers avant que les fichiers ne soient fermés.

Était-ce utile?

La solution

(defn doall-recur [s]
  (if (seq? s)
    (doall (map doall-recur
                s))
    s))

(use 'clojure.contrib.duck-streams)
(with-open [r1 (reader "test1.txt")
            r2 (reader "test2.txt")]
  (doall-recur (list (line-seq r2) (line-seq r1))))

Sortie:

(("This is test2.txt" "") ("This is test1.txt" ""))

Autres conseils

(defn doall* [s] (dorun (tree-seq seq? seq s)) s)

Cela a fonctionné pour moi dans un test unitaire

(use 'clojure.walk)
(postwalk identity nested-lazy-thing)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top