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