3

Scala 文档说 flatten api 将列表列表展平,并且只能在列表列表上调用。

那么为什么可以在下面调用它呢?

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

1 回答 1

10

ScalaDoc API 显示[use case]了方法签名的简化表示。如果单击Full signature它,它将扩展为完整的签名:

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

flatten只要存在从列表元素类型A(在您的情况下Option[String])到任何其他类型的可遍历的隐式转换,您就可以调用列表或大多数其他集合。

任何Option类型都可以隐式转换为GenTraversableOnce--Some充当单个元素集合和None空集合。这意味着您可以调用flattenList[Option[String]]获取List[String].

于 2013-04-13T15:27:46.380 回答