10.4 For ループ

for 内包表記は命令型言語の for ループに似ていますが、結果のリストを生成します。時には、結果のリストはいらないがリストに対するジェネレータとフィルタの柔軟性が欲しいことがあります。これは for 内包表記の変種、for ループで表現できます。

for ( s ) e

この構文は標準的な for 内包表記と同じですが、キーワード yield がありません。for ループは、ジェネレータとフィルタの列 s から生成される各要素に対して、式 e を実行します。

例として、次の式はリストのリストとして表現される行列の全要素を表示します。

for (xs <- xss) { for (x <- xs) print(x + "\t") println() }

for ループからクラス List の高階メソッドへの翻訳は、for 内包表記の翻訳と似ていますが、より単純です。for 内包表記で map と flatMap へと翻訳するところで、for ループではそれらを foreach へ翻訳します。