2010-08-26 44 views

回答

41

絕對,肯定不是。 (不是!)

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

不是? (15個字符) – 2010-08-26 05:14:55

+2

令人驚訝的是,so1.flapMap(r => r)也適用。這似乎是由於Option可以轉換爲可迭代的事實:隱式def option2Iterable [A](xo:Option [A]):Iterable [A] = xo.toList。當僅調用xo.toList時,Some(X)會生成一個列表值。沒有給出一個List()。其餘的是Flatmap。 – ssanj 2010-08-26 05:25:44

+9

並不奇怪,因爲'flatMap(fun)'=='map(fun).flatten'。 – Debilski 2010-08-26 16:29:13

相關問題