versiones guia español descargar actualizar scala scala-collections scala-option

scala - guia - qgis manual



Cómo transformar la colección Scala de la Opción[X] a la colección de X (2)

Para fines educativos, es posible que desee algunas alternativas:

scala> val list1 = List(Some(1), None, Some(2)) list1: List[Option[Int]] = List(Some(1), None, Some(2)) scala> list1 flatten res0: List[Int] = List(1, 2) // Expanded to show the implicit parameter scala> list1.flatten(Option.option2Iterable) res1: List[Int] = List(1, 2) scala> list1 flatMap (x => x) res2: List[Int] = List(1, 2) scala> list1 flatMap Option.option2Iterable res3: List[Int] = List(1, 2) // collect is a simultaneous map + filter scala> list1 collect { case Some(x) => x } res4: List[Int] = List(1, 2)

Con Scalaz, puede realizar una operación ligeramente diferente llamada sequence , que devuelve la Option[List[Int]] .

scala> import scalaz._; import Scalaz._ import scalaz._ import Scalaz._ scala> val list1: List[Option[Int]] = List(Some(1), None, Some(2)) list1: List[Option[Int]] = List(Some(1), None, Some(2)) scala> list1.sequence res1: Option[List[Int]] = None scala> val list2: List[Option[Int]] = List(Some(1), Some(2)) list2: List[Option[Int]] = List(Some(1), Some(2)) scala> list2.sequence res2: Option[List[Int]] = Some(List(1, 2))

Estoy empezando a explorar Scala, y una de las cosas que me intriga es el tipo de Option y la promesa de poder eliminar los errores relacionados con null .

Sin embargo, no he podido descifrar cómo transformar una lista (u otra colección) de, por ejemplo, Option[String] , en una colección de String (obviamente filtrando cualquier valor que sea None ).

En otras palabras, ¿cómo me sale de esto?

List[Option[Int]] = List(Some(1))

... a esto:

List[Int] = List(1)

Estoy usando Scala 2.8 si eso tiene algún impacto en la respuesta.


val list1 = List(Some(1), None, Some(2)) val list2 = list1.flatten // will be: List(1,2)