Si tengo un List[Option[A]]en Scala, ¿cuál es la forma idiomática de filtrar los Nonevalores?
Una forma es utilizar lo siguiente:
val someList: List[Option[String]] = List(Some("Hello"), None, Some("Goodbye"))
someList.filter(_ != None)
¿Existe una forma más "idiomática"? Esto parece bastante simple.

Respuestas:
Si desea deshacerse de las opciones al mismo tiempo, puede usar
flatten:fuente
flatMapse puede usar para procesar los elementos de la lista distintos deNones, similar asomeList.flatten.map, ya que a menudo se quiere trabajar con estos elementos y no solo conflattenla lista por diversión.Optionobjetos, pero otras veces necesito que permanezcan comoOption[A]. Cada vez encuentro más usos para estaOption[A]característica interesante.someList.filter(_.isDefined)si desea mantener el tipo de resultado comoList[Option[A]]fuente
La
catsbiblioteca también tieneflattenOption, que convierte anyF[Option[A]]en unF[A](dondeF[_]es unFunctorFilter)fuente