【发布时间】:2012-05-23 23:35:01
【问题描述】:
在 scala 中,如何定义两个 Option 参数的加法?具体来说,假设它们是 Int 类型的包装器(我实际上正在使用双精度图,但这个示例更简单)。
我尝试了以下方法,但它只是给了我一个错误:
def addOpt(a:Option[Int], b:Option[Int]) = {
a match {
case Some(x) => x.get
case None => 0
} + b match {
case Some(y) => y.get
case None => 0
}
}
编辑添加:
在我的实际问题中,我添加了两张代表稀疏向量的地图。所以 None 情况返回 Map[Int, Double] 而 + 实际上是一个 ++(在 stackoverflow.com/a/7080321/614684 进行了调整)
【问题讨论】:
-
您没有以正确的方式提取选项的内容。当您匹配大小写 Some(x) 时,x 是选项内的值(类型 Int),并且您不调用 get 。案例一些(x)=> x。无论如何,如果你想要内容或默认,a.getOrElse(0) 更方便。
-
@didierd 谢谢!这就是我需要的答案。你能转换成答案吗?我会选择你的。
标签: scala