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))