Scala:访问可选对象中的可选值

有没有一种很好的方法来访问Option Object中的Option Value?
嵌套的匹配案例导致丑陋的树结构.

所以如果我有例如:

case class MyObject(value: Option[Int])
val optionObject : Option[MyObject] = Some(MyObject(Some(2))

我知道访问该值的唯一方法是:

val defaultCase = 0 //represents the value when either of the two is None
optionObject match {
    case Some(o) => o.value match {
        case Some(number) => number
        case None => defaultCase
    }
    case None => defaultCase
}

这非常难看,因为这个构造只是用于访问一个小的Option值.

我想做的是:

optionObject.value.getorElse(0)

或者像你可以用Swift做的:

if (val someVal = optionObject.value) {
   //if the value is something you can access it via someVal here
}

Scala中有什么东西能让我很好地处理这些事情吗?

谢谢!

解决方法

flatMap将允许您映射选项并“展平”结果.因此,如果(并且仅当)外部和内部选项都是Some,那么您将获得具有您的价值的Some.然后,您可以像对待任何其他选项一样调用getorElse.

optionObject.flatMap(_.value).getorElse(0)

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...