scala中的迭代子目录,问下标红的这一句code是什么意思???

mport java.io.File
def subdirs(dir: File): Iterator[File] = {
val children = dir.listFiles.filter(_.isDirectory)
children.toIterator ++ children.toIterator.flatMap(subdirs _)

clipboard.png

阅读 2.2k
1 个回答

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]连起来,合并成一个

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进