如果我有一个List[Option[A]]
在Scala中,什么是过滤掉的惯用方式None
价值?
一种方法是使用以下命令:
val someList: List[Option[String]] = List(Some("Hello"), None, Some("Goodbye"))
someList.filter(_ != None)
有没有更“地道”的方式? 这似乎很简单。
如果我有一个List[Option[A]]
在Scala中,什么是过滤掉的惯用方式None
价值?
一种方法是使用以下命令:
val someList: List[Option[String]] = List(Some("Hello"), None, Some("Goodbye"))
someList.filter(_ != None)
有没有更“地道”的方式? 这似乎很简单。
如果你想在同一时间摆脱的选项,您可以用flatten
:
scala> someList.flatten
res0: List[String] = List(Hello, Goodbye)
someList.filter(_.isDefined)
如果你想保留的结果类型List[Option[A]]
所述cats
库还具有flattenOption
,其中将任何F[Option[A]]
到F[A]
其中F[_]
是FunctorFilter
)
import cats.implicits._
List(Some(1), Some(2), None).flattenOption == List(1, 2)