我有以下列表:
val list: Option[List[String]] = Some(List("one","two","three"))
但是我希望列表是一样的,但是没有选项,所以看起来像这样:
val changedList = List("one","two","three")
但是,我是scala的新手,无法弄清楚该怎么做! 感谢您的帮助!
答案 0 :(得分:1)
getOrElse
方法就足够了。
list.getOrElse(List.empty[String])
在这种情况下,我强烈建议避免使用模式匹配,因为它比getOrElse更具程序性。
答案 1 :(得分:1)
这里有两个解决方案(长度完全相同,很奇怪):
list.toList.flatten
得到与
相同的结果list.getOrElse(Nil)
答案 2 :(得分:0)
由于您的输入为Option[T]
,因此可以将其模式匹配到Some
或None
,
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