The simplest way to remove all the Options (both the Some wrappers and Nones) from a list is to flatten it:
List(
Option("a"),
Option("b"),
None
).flatten
res39: List[String] = List(a, b)
You can achieve the same effect by using flatMap, which will allow you to modify the results if you need to (e.g. to change the type or modify the values):
List(
Option("a"),
Option("b"),
None
).flatMap(
x => x
)
If this isn’t want you want, you can also filter the list by whether the values are a None or not:
List(
Option("a"),
Option("b"),
None
).filter(_.isDefined)
res40: List[Option[String]] =
List(Some(a), Some(b))