dea*_*mon 16 collections functional-programming scala
是否有可能获得List[Option[T]]
具有值的所有条目?
例:
val list = List(None, Some(1), None, Some(2))
list.filter(_.isDefined).map(_.get)
Run Code Online (Sandbox Code Playgroud)
结果:
List[Int] = List(1, 2)
Run Code Online (Sandbox Code Playgroud)
有一种方法可以一步到位吗?这是一个常见的情况,不是吗?
是的,您可以使用collect
:
list.collect { case Some(x) => x }
Run Code Online (Sandbox Code Playgroud)
collect
获取a PartialFunction[A,B]
并将此函数应用于定义它的所有元素,并丢弃其余元素.
编辑:
正如gpampara正确提到的,对于这种情况flatten
就足够了.collect
如果有额外的约束和/或转换,它将是正确的工具.