【发布时间】:2021-08-31 13:50:09
【问题描述】:
我在尝试 getOrElse 2 个值时遇到错误。作为一个精简的例子,我要做的就是:
- 取一个字符串值
- 检查它是否是一个范围(例如50-60)。如果是,则取“-”之前的第一个值,否则取整个值
- 将值作为 Option[Double] 返回以进行进一步处理
def deriveResult(inputValue: Option[String]): String = {
val hyphenIndex = inputValue.get.indexOf("-")
// parse the low range
val rangedValue: Option[java.lang.Double] = if (hyphenIndex != -1) {
val lowRangeStringUntruncated = inputValue.get.substring (0, hyphenIndex)
val lowRangeString = lowRangeStringUntruncated.substring (0, scala.math.min (lowRangeStringUntruncated.length, 8) )
scala.util.Try[java.lang.Double](lowRangeString.toDouble).toOption
} else null
val nonRangedValue: Option[java.lang.Double] = scala.util.Try[java.lang.Double](inputValue.get.toDouble).toOption
val valueOptDouble: Option[java.lang.Double] = Option(rangedValue.getOrElse(nonRangedValue))
...
<do something with valueOptDouble>
}
Error:(157, 89) type mismatch;
found : Option[Double]
required: Double
val valueOptDouble: Option[java.lang.Double] = Option(rangedValue.getOrElse(nonRangedValue))
我确信这可以写得更简洁,但我很困惑的是为什么最后一行会导致这个错误,因为看起来 rangedValue 和 nonRangedValue 属于 Option[Double] 类型
感谢您的帮助
【问题讨论】: