none has getorelse check scala scala-option

has - scala option get



Combinando 2 opciones en 1 (3)

¿Existe una función predefinida x en Scala que combine 2 opciones para que

Some(a) x None => Some(a) None x Some(b) => Some(b) None x None => None


En los comentarios de la pregunta, usted menciona que no puede tener Some(a) y Some(b) , por lo que lo que realmente tiene es la Option[Either[Int,Int]] . En ese caso, puede usar x.map(_.merge) para volver a la Option[Int] , por ejemplo

scala> val x:Option[Either[Int,Int]] = Some(Left(2)) x: Option[Either[Int,Int]] = Some(Left(2)) scala> x.map(_.merge) res0: Option[Int] = Some(2)


No es difícil hacerlo a mano:

scala> val a = Some(1) a: Some[Int] = Some(1) scala> val b = Some(2) b: Some[Int] = Some(2) scala> Seq(a,b).flatten.headOption res0: Option[Int] = Some(1)


Sí, este es el método orElse . Elige el primer valor definido, o None si no se define ninguno.

scala> Some(1) orElse None res0: Option[Int] = Some(1) scala> None orElse Some(1) res1: Option[Int] = Some(1) scala> None orElse None res2: Option[Nothing] = None scala> Some(1) orElse Some(2) res3: Option[Int] = Some(1)