无法从Option [Double]中获取的元组中获取单个值

时间:2017-11-16 19:02:34

标签: scala functional-programming

嘿,我从元组中获取值时遇到了困难

如果它们不等于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)

谢谢!

1 个答案:

答案 0 :(得分:3)

我认为这正是您所寻找的,至少对于方法配置文件是正确的。

def optionDoubleAddition(a: Option[Double], b: Option[Double]) : Option[Double] =
  for {x <- a; y <- b} yield x+y

这会打开每个Option,添加它们并重新包装结果,但如果其中一个或两个都是None,那么解包会停止并返回None