Scala List[Option]#flatMap
val list = List(Some(1), None, Some(3)) list.flatMap { //=> List(1, 2, 3, 6) case Some(x) => List(x, x * 2) case None => List() } list.map { //=> List(List(1, 2), List(), List(3, 6)) case Some(x) => List(x, x * 2) case None => List() } list.flatMap{ //=> List(2, 6) case Some(x) => Some(x * 2) case None => None } list.map { //=> List(Some(2), None, Some(6)) case Some(x) => Some(x * 2) case None => None } list.flatMap(x => x) //=> List(1, 3) list. map(x => x) //=> List(Some(1), None, Some(3))