for式のフィルタ

カレントディレクトリ内のcsvファイルの名前だけ出力

C#で書いた場合

例によってLinqは使わない。

var files = Directory.GetFiles(".");
foreach (var file in files) {
    if (file.EndsWith(".csv"))
        Console.WriteLine(file);
}

Scalaでフィルタを使った場合

val files = (new java.io.File(".")).listFiles
for (file <- files if file.getName.endsWith(".csv"))
  println(file)

と書ける。

ちなみにフィルタを増やす場合はセミコロンで区切る。

val files = (new java.io.File(".")).listFiles
for (file <- files 
     if file.getName.endsWith(".csv");
     if file.getName.startsWith("Test"))
  println(file)

仮にLinqを使えば簡潔さは変わらない気がするものの、計算量はどうなんだろう。今度調べる。