Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在选项上使用映射[Seq[T]]_Scala - Fatal编程技术网

Scala 在选项上使用映射[Seq[T]]

Scala 在选项上使用映射[Seq[T]],scala,Scala,我有一个选项[Seq[T]],很自然地,它可能包含一个Seq[T],或者实际上可能没有 有人警告我不要使用.get,但是如果选项为None,我如何使用map返回预期填充的Seq[T]或空列表() 我已经设法使用模式匹配来实现它,我想知道是否有一种方法可以使用map来实现相同的目标。谢谢 val maybeProducts:Option[Seq[Product]] = {....} val products:Seq[Product] = { maybeProducts match {

我有一个选项[Seq[T]],很自然地,它可能包含一个Seq[T],或者实际上可能没有

有人警告我不要使用.get,但是如果选项为None,我如何使用map返回预期填充的Seq[T]或空列表()

我已经设法使用模式匹配来实现它,我想知道是否有一种方法可以使用map来实现相同的目标。谢谢

val maybeProducts:Option[Seq[Product]] = {....}

val products:Seq[Product] = {
  maybeProducts match {
    case Some(ps) => ps
    case None     => List()
  }
}

您可以使用
getOrElse

maybeProducts.getOrElse(List())

备案;另一种解决方案是将选项转换为列表,然后将其展平:

maybeProducts.toList.flatten

谢谢,我认为既然get被认为是邪恶且容易出错的,那么我们也不应该使用它的兄弟getOrElse。@user3231690避免使用
get
的原因是在
None
的cae中可能会有异常,因为没有定义的结果。使用
getOrElse
时,您始终有一个已定义的返回值,不需要任何异常。
maybeProducts.toList.flatten