flatMap

(再び、mizushimaさん@Lingrより)

flatMapとは
(計算の)「結果「である」コレクションを連結した新しいコレクションを返」すmap
である。

例えば、

List(1, 2, 3).map{i => List(i, i + 1)}
の結果は
List(List(1, 2), List(2, 3), List(3, 4))
になりますが
List(1, 2, 3).flatMap{i => List(i, i + 1)}
の結果は
List(1, 2, 2, 3, 3, 4) 

に、なります。

シグネチャで示すと

map  [B](f : (A) => B) : Iterable[B] 

flatMap  [B](f : (A) => Iterable[B]) : Iterable[B] 

のように、flatMapに与えるブロック(関数)の返り値の型は
かならずIterable[B]でなければいけません。