Decir que tengo una función que comprueba si alguna operación es aplicable a una instancia de A y, si es así, devuelve una instancia de B o Nada:Scala: filtrar una colección de opciones
def checker[A,B](a: A) : Option[B] = ...
Ahora quiero para formar una nueva colección que contenga todas las instancias válidas de B, descartando los valores Ninguno. El siguiente código parece hacer el trabajo, pero sin duda hay una mejor manera:
val as = List[A](a1, a2, a3, ...)
val bs =
as
.map((a) => checker(a)) // List[A] => List[Option[B]]
.filter(_.isDefined) // List[Option[B]] => List[Option[B]]
.map(_.get) // List[Option[B]] => List[B]
Gracias!
flatMap that shit –
@oxbow_lakes Creo que la cita correcta es: _ "¿Qué es esto? Hora de aficionados? FlatMap that shit!" _ –
¿Esa cita se originó en twitter? – huynhjl