gpt4 book ai didi

Scala:访问 optional 对象中的 optional 值

转载 作者:行者123 更新时间:2023-12-04 18:05:41 25 4
gpt4 key购买 nike

有没有一种访问选项对象内选项值的好方法?
嵌套的匹配案例会导致丑陋的树结构。

因此,如果我有例如:

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将让您映射一个选项并“展平”结果。因此,如果(且仅当)外部和内部 Option都是Some , 你会得到一个 Some有你的值(value)。然后您可以调用getOrElse就像对待任何其他 Option 一样.

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

关于Scala:访问 optional 对象中的 optional 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28913239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com