Ich habe ein einfaches Abstraktion Dateisystem:Wie kann ich mit Stream einen Baum in Scala durchqueren?
trait PathItem { val label: String }
case class PathEnd(label: String, uri: String) extends PathItem
case class PathDirectory(
label: String = "",
contents: List[PathItem] = List.empty[PathItem]
) extends PathItem
diese Struktur mit mir einen beliebig komplexen Baum Verzeichnisse aufbauen kann (PathDirectory) und Dateien (PATHEND).
Wie konnte ich Scala Streams eine Liste der „Dateien“, so etwas zu extrahieren: wie diese
getFileStream(rootDir).foreach(f => println(f.uri))
getFileStream(rootDir).find(_.uri == "someTargetURI")
// where getFileStream creates a Stream[PathEnd] given a starting rootDir
Wenn Sie durch den Baum wäre irgendwie cool, aber ich bin nicht zu verstehen, wie zu schaffen ein Stream dafür aus dem scaladoc.
(ich weiß, ich kann nur eine einfache rekursive Funktion schreiben, aber ich versuche, Bäche hier grok.)
Sie können so ziemlich behandeln ein 'Stream' (oder' Iterator') das gleiche wie Sie wäre ein 'list' und nachfolgende Elemente träge berechnet werden. EDIT: eine gute Grundierung: http://alvinalexander.com/scala/how-to-use-stream-class-lazy-list-scala-cookbook – spiffman