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