嘿,我从元组中获取值时遇到了困难
如果它们不等于None,我想对两个Option [Double]的值进行算术运算。我到目前为止的代码就是这个
def optionDoubleAddition(a: Option[Double], b: Option[Double]) : Option[Double] = {
val tuple = if(a != None && b != None) (a.getOrElse(0: Double),b.getOrElse(0: Double))
println(tuple) //prints the values correctly when passed two doubles
None //something to make the function work
}
它不允许我使用
从元组中获取单个元素println(t(0))
println(t._1)
另外我对getOrElse函数有点担心,除此之外还有其他选择,我已尝试以不同的方式解决上述问题,例如,如果我想做以下事情
val example: Option[Double] = Some(5.0)
我希望获得示例值,否则为
example.getOrElse(None)
返回值为Any然而我需要它是一个double,如果我尝试以下我也会遇到错误,如果它是None
val doubleValue: Double = example.getOrElse(None)
谢谢!
答案 0 :(得分:3)
我认为这正是您所寻找的,至少对于方法配置文件是正确的。
def optionDoubleAddition(a: Option[Double], b: Option[Double]) : Option[Double] =
for {x <- a; y <- b} yield x+y
这会打开每个Option
,添加它们并重新包装结果,但如果其中一个或两个都是None
,那么解包会停止并返回None
。