Scala:过滤和扁平化Seq的最佳方法是什么[Option[A]]

a14dhokn  于 2023-01-17  发布在  Scala
关注(0)|答案(1)|浏览(143)

假设我有一个val allStrs: Seq[Option[String]] = Seq(Some("A"), Some("B"), None)
并希望有这样的结果:Seq("A", "B"),最优雅的/Scala方法是什么?
我有一个方法是allStrs.filter(_.isDefined).flatten,它是最好的方法吗?

bxjv4tth

bxjv4tth1#

正如评论中提到的,这将奏效:

val allStrs: Seq[Option[String]] = ???
val s: Seq[String] = allStrs.flatten

flatten操作对容器序列进行操作,它从每个容器中取出元素,并创建一个包含所有这些元素的序列。
Option的行为很像一个包含0或1个元素的容器,因此Option序列上的flatten将从这些Option中提取值,它删除序列中的所有None值,并提取所有Some值的内容。

相关问题