如何过滤无的出列表[选项]的?(How to filter None's out of Li

2019-07-28 22:06发布

如果我有一个List[Option[A]]在Scala中,什么是过滤掉的惯用方式None价值?

一种方法是使用以下命令:

val someList: List[Option[String]] = List(Some("Hello"), None, Some("Goodbye"))
someList.filter(_ != None)

有没有更“地道”的方式? 这似乎很简单。

Answer 1:

如果你想在同一时间摆脱的选项,您可以用flatten

scala> someList.flatten
res0: List[String] = List(Hello, Goodbye)


Answer 2:

someList.filter(_.isDefined)如果你想保留的结果类型List[Option[A]]



Answer 3:

所述cats库还具有flattenOption ,其中将任何F[Option[A]]F[A]其中F[_]FunctorFilter

import cats.implicits._

List(Some(1), Some(2), None).flattenOption == List(1, 2)


文章来源: How to filter None's out of List[Option]?
标签: scala option