2013-04-13 34 views
3

Scala文檔說flatten api會展平列表的列表,並且它只能在列表的列表上調用。Flatten函數

爲什麼可以在下面調用它?

List(Some("Tony"), None).flatten 

回答

9

ScalaDoc API顯示[use case]-方法簽名的簡化表示。 如果你點擊Full signature將擴展爲完整的簽名:

Full Signature 
def flatten[B](implicit asTraversable: (A) ⇒ GenTraversableOnce[B]): List[B] 

您可以撥打flatten上列出,或在其他大多數藏品對於這個問題,只要有從列表中元素的隱式轉換鍵入A(在你的情況下Option[String])到任何其他類型的traversable。

任何Option類型都可以隱式轉換爲GenTraversableOnce - Some充當單個元素集合,None充當空集合。 這意味着您可以致電flattenList[Option[String]]獲取List[String]