私は 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 が返されます。これらの配列をすべて連結して返すにはどうすればよいですか? これを行うより良い方法はありますか?