for式のフィルタ
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を使えば簡潔さは変わらない気がするものの、計算量はどうなんだろう。今度調べる。