Frage

Ich habe einige Strukturen mit verschachtelten lazy-Sequenzen, die aus Dateien lesen. Wenn ich testen würde ich sie in einer rekursiven Version von DOALL in der Lage sein möge wickelt die Daten, um sicherzustellen, alle aus den Akten gezogen wird vor die Dateien geschlossen erhalten.

War es hilfreich?

Lösung

(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))))

Ausgabe:

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

Andere Tipps

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

Das funktioniert für mich in einem Unit-Test

(use 'clojure.walk)
(postwalk identity nested-lazy-thing)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top