从Scala的Option [List]中提取列表?

时间:2018-08-08 19:36:55

标签: scala

我有以下列表:

val list: Option[List[String]] = Some(List("one","two","three"))

但是我希望列表是一样的,但是没有选项,所以看起来像这样:

val changedList = List("one","two","three")

但是,我是scala的新手,无法弄清楚该怎么做! 感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

Option中的

getOrElse方法就足够了。

list.getOrElse(List.empty[String])

在这种情况下,我强烈建议避免使用模式匹配,因为它比getOrElse更具程序性。

答案 1 :(得分:1)

这里有两个解决方案(长度完全相同,很奇怪):

list.toList.flatten

得到与

相同的结果
list.getOrElse(Nil)

答案 2 :(得分:0)

由于您的输入为Option[T],因此可以将其模式匹配到SomeNone

scala> val list: Option[List[String]] = Some(List("one","two","three"))
list: Option[List[String]] = Some(List(one, two, three))

scala> list match {
     |    case Some(nonEmptyList) => nonEmptyList
     |    case None => List.empty[String]
     | }
res0: List[String] = List(one, two, three)

或者,更简短的方法是使用getOrElse

scala> list.getOrElse(List.empty[String])
res1: List[String] = List(one, two, three)

找到了简单的示例Option in Scala, University of Pennsylvania ,可能有用

答案 3 :(得分:0)

.get将为您服务

val list: List[String] = Some(List("one","two","three")).get