Scala文档说flatten api会压缩列表列表,只能在列表列表中调用它。
为什么可以在下面调用它?
List(Some("Tony"), None).flatten
答案 0 :(得分: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
作为空集合。
这意味着您可以致电flatten
上的List[Option[String]]
获取List[String]
。