【发布时间】:2017-01-05 00:44:55
【问题描述】:
我有一个简单的文件系统抽象:
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 Streams 来提取“文件”列表,如下所示:
getFileStream( rootDir ).foreach( f => println(f.uri) )
getFileStream( rootDir ).find( _.uri == "someTargetURI" )
// where getFileStream creates a Stream[PathEnd] given a starting rootDir
像这样穿过树会有点酷,但我不明白如何从 scaladoc 中为此创建 Stream。
(我知道我可以只写一个简单的递归函数,但我想在这里了解 Streams。)
【问题讨论】:
-
您几乎可以像对待
List一样对待Stream(或Iterator),随后的元素将被延迟计算。编辑:一个很好的入门:alvinalexander.com/scala/…