概要 for式が実際どのように展開されるのかわかった気になっていたけど、結局よくわかってなくて、ちゃんと調べたら理解できたので、自戒の念も込めて書いた記事です。 1 言語仕様 6.19 For Comprehensions and For Loopsに書かれていることは簡単で、 yieldのないfor式は、foreach展開 yieldがあるfor式は、flatMap/map展開 になります。これだけ。 つまり大雑把に言えば、 単純に値を処理したいだけの時は、yieldのないfor式 (foreach展開) 値をmap(型変換など)して返したい時は、yieldをつけたfor式 (flatMap/map展開) を使用すればよいです。 ちなみに、for式中のifはwithFilterに変換されます。