我是 Scala 的新手,所以我只是在尝试。以下代码递归地打印出 D:\Downloads 下所有文件的名称:
import java.io.File
object Run {
def main (args: Array[String]){
//read each file
val f = new File("""D:\Downloads""");
listFiles(f)
}
def listFiles(f: Any): Unit= f match{
case f:File if f.isDirectory => f.listFiles().deep.foreach(listFiles(_))
case f:File if f.isFile => println(f.getName)
case _ => Unit
}
}
这行得通。现在,我希望 listFiles 建立一个字符串列表并返回它。这就是我所做的:
def listFiles(f: Any): List[String] = f match{
case f:File if f.isDirectory => f.listFiles().foreach(listFiles(_))
case f:File if f.isFile => List(f.getName)
case _ => Nil
}
当 f 是目录时,foreach 应该递归调用 listFiles 并返回一个 List。如何将所有这些数组连接在一起并返回它们?有没有更好的方法来做到这一点?