by shigemk2

当面は技術的なことしか書かない

flatMapとは

f:id:shigemk2:20150101163214p:plain

scala> List(1, 2, 3).flatMap(x => List(x*2))
res8: List[Int] = List(2, 4, 6)

scala> List(1, 2, 3).flatMap(x => List("a"))
res9: List[String] = List(a, a, a)

scala> List(1, 2, 3).flatMap(_ => List("a"))
res10: List[String] = List(a, a, a)

flatMap自体はこういう説明。

コレクションの要素を変換する。関数fでAを処理して複数のBを返すと、それらを結合した新しいコレクションが作られる。

Scalaコレクションメソッドメモ(Hishidama's Scala collection method Memo)

Modegramming Style: Scala Tips / flatMapとbind(>>=)の違い

使い方はなんとなくこんな感じ。

flatMapはbind(>>=)とほぼ同じという話まで持ち上がってきており、リストなどから値を取り出して、それを関数に渡すという理解がいまいまのところ。