如果我List[Option[A]]在Scala中有一个过滤掉None值的惯用方法是什么?
一种方法是使用以下内容:
val someList: List[Option[String]] = List(Some("Hello"), None, Some("Goodbye"))
someList.filter(_ != None)
Run Code Online (Sandbox Code Playgroud)
有更"惯用"的方式吗?这看起来很简单.
Nic*_*las 154
如果您想同时删除选项,可以使用flatten:
scala> someList.flatten
res0: List[String] = List(Hello, Goodbye)
Run Code Online (Sandbox Code Playgroud)
该cats文库还具有flattenOption,这将任何F[Option[A]]进入的F[A](其中,F[_]是FunctorFilter)
import cats.implicits._
List(Some(1), Some(2), None).flattenOption == List(1, 2)
Run Code Online (Sandbox Code Playgroud)