scala> List(List(1), List(2), List(3), List(4))
res18: List[List[Int]] = List(List(1), List(2), List(3), List(4))
scala> res18.flatten
res19: List[Int] = List(1, 2, 3, 4)
scala> res18.flatMap(identity)
res20: List[Int] = List(1, 2, 3, 4)
Is there any difference between these two functions? When is it appropriate to use one over the other? Are there any tradeoffs?
You can view flatMap(identity)
as map(identity).flatten
. (Of course it is not implemented that way, since it would take two iterations).
map(identity)
gives you the same collection, so in the end it is the same as only flatten
.
I would personally stick to flatten
, since it is shorter/easier to understand and designed to exactly do this.