映射可选的Seq

时间:2015-07-27 19:46:13

标签: scala

我已经阅读了一些关于如何处理Seq[Option[x], Option[x]]的帖子,但我有不同的情况,我有一个Option[Seq[x]]。我正在努力映射这个,我想要的是:

val x: Option[Seq[String]] = ...
x.map((y: String) => ...)

而是获得x.map((y: Seq[String] =>)

当然我可以用理解来处理这个问题,也许这是正确的方法,但我很感激有关如何处理这个的建议

4 个答案:

答案 0 :(得分:1)

您可以对实际getOrElse使用mapSeq

x.getOrElse(Nil).map((y:String) => ...)

答案 1 :(得分:1)

Option也支持fold操作:

x.fold(Seq[String]())((entry) => entry).map( ... )

我认为marteljn的解决方案更具可读性。

答案 2 :(得分:1)

或者简单地说:

x.map(_.map(y: String => ... ))

答案 3 :(得分:0)

几乎总有几种方式:

x.toSeq.flatten.map(string: String => ???)


x.toSeq.flatMap(_.map(string => ???))

和我个人的最爱:

x.fold(Seq.empty[String])(_.map(string => ???))