mport java.io.File
def subdirs(dir: File): Iterator[File] = {
val children = dir.listFiles.filter(_.isDirectory)
children.toIterator ++ children.toIterator.flatMap(subdirs _)
mport java.io.File
def subdirs(dir: File): Iterator[File] = {
val children = dir.listFiles.filter(_.isDirectory)
children.toIterator ++ children.toIterator.flatMap(subdirs _)
children: dir的所有一级子目录
红线那部分代码的值是一个
dir的所有二级及以下子目录的iterator, 和children连起来就是"所有子目录的iterator"。children.toIterator: 类型是Iterator[File], 是所有一级子目录的iterator{subdirs _}是个匿名函数,类型是File => Iterator[File]flatMap的意思是"先map再flat":
先map: 把每个一级子目录(
File)传给{subdirs _},得到若干个相应的Iterator[File]再flat: 把这些
Iterator[File]连起来,合并成一个