2010-08-26 17 views

Respuesta

41

Absolutamente, positivamente no. (No!)

scala> val so1 = List(Some(1), None, Some(2), None, Some(3)) 
so1: List[Option[Int]] = List(Some(1), None, Some(2), None, Some(3)) 

scala> so1.flatten 
res0: List[Int] = List(1, 2, 3) 
+0

no? (15 caracteres) –

+2

Sorprendentemente so1.flapMap (r => r) también funciona. Esto parece deberse al hecho de que la Opción se puede convertir en iterable mediante: imp definida implícita2Iterable [A] (xo: Opción [A]): ​​Iterable [A] = xo.toList. Cuando se llama a xo.toList, solo algunos (X) generan un valor de lista. Ninguno da una lista(). Flatmap hace el resto. – ssanj

+9

No es tan sorprendente, porque 'flatMap (diversión)' == 'map (fun) .flatten'. – Debilski

Cuestiones relacionadas