我是 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。如何将所有这些数组连接在一起并返回它们?有没有更好的方法来做到这一点?