拼合功能

Mor*_*ive 3 scala

Scala文档说flatten api会压缩列表列表,只能在列表列表中调用它.

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

List(Some("Tony"), None).flatten  
Run Code Online (Sandbox Code Playgroud)

axe*_*l22 10

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

Full Signature
def flatten[B](implicit asTraversable: (A) ? GenTraversableOnce[B]): List[B]
Run Code Online (Sandbox Code Playgroud)

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

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