Scala 文档说 flatten api 将列表列表展平,并且只能在列表列表上调用。
那么为什么可以在下面调用它呢?
List(Some("Tony"), None).flatten
Scala 文档说 flatten api 将列表列表展平,并且只能在列表列表上调用。
那么为什么可以在下面调用它呢?
List(Some("Tony"), None).flatten
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].