0
我有一個簡單的文件系統抽象:如何使用Stream遍歷Scala中的樹?
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
採用這種結構,我可以建立子目錄(PathDirectory)和文件(PATHEND)的任意複雜的樹。
我怎麼能使用Scala的流以提取的「文件」列表是這樣的:
getFileStream(rootDir).foreach(f => println(f.uri))
getFileStream(rootDir).find(_.uri == "someTargetURI")
// where getFileStream creates a Stream[PathEnd] given a starting rootDir
通過樹這樣的傳球是有點酷,但我不理解如何創建來自scaladoc的Stream。
(我知道我可以只寫一個簡單的遞歸函數,但我想在這裏神交流。)
你幾乎可以治療'Stream'(或'Iterator'),你會一個'List',以及隨後的元素將被懶洋洋地計算相同。編輯:一個很好的入門書:http://alvinalexander.com/scala/how-to-use-stream-class-lazy-list-scala-cookbook – spiffman