some none has check scala option

none - scala option get



Cómo filtrar ninguno fuera de la lista[Opción]? (3)

Si tengo una List[Option[A]] en Scala, ¿cuál es la forma idiomática de filtrar los valores None ?

Una forma es usar lo siguiente:

val someList: List[Option[String]] = List(Some("Hello"), None, Some("Goodbye")) someList.filter(_ != None)

¿Hay una manera más "idiomática"? Esto parece bastante simple.


La biblioteca de cats también tiene flattenOption , que convierte cualquier F[Option[A]] en una F[A] (donde F[_] es un FunctorFilter )

import cats.implicits._ List(Some(1), Some(2), None).flattenOption == List(1, 2)

A partir de los cats 1.0, esta función se movió a FunctorEmpty en la biblioteca cats-mtl-core , por lo que necesitarás:

import cats.mtl.implicits._


Si quiere deshacerse de las opciones al mismo tiempo, puede usar flatten :

scala> someList.flatten res0: List[String] = List(Hello, Goodbye)


someList.filter(_.isDefined) si desea mantener el tipo de resultado como List[Option[A]]