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]でなければいけません。