2010-08-26 16 views

Odpowiedz

41

Absolutnie, pozytywnie nie. (Nie!)

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

nie? (15 znaków) –

+2

Zadziwiająco so1.flapMap (r => r) również działa. Wydaje się, że wynika to z faktu, że Opcja może zostać przekonwertowana na iterowalną przez: domyślną opcję def2Nable [A] (xo: Option [A]): ​​Iterable [A] = xo.toList. Kiedy xo.toList jest wywoływane tylko Some (X) generuje wartość listy. Brak daje listę(). Flatmap zajmie się resztą. – ssanj

+9

Nie tak zaskakujące, ponieważ 'flatMap (fun)' == 'map (fun) .flatten'. – Debilski

Powiązane problemy