Scala:访问可选对象中的可选值
发布时间:2020-12-16 09:58:18 所属栏目:安全 来源:网络整理
导读:有没有一种很好的方法来访问Option Object中的Option Value? 嵌套的匹配案例导致丑陋的树结构. 所以如果我有例如: case class MyObject(value: Option[Int])val optionObject : Option[MyObject] = Some(MyObject(Some(2)) 我知道访问该值的唯一方法是: v
有没有一种很好的方法来访问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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |