gpt4 book ai didi

scala 选项和数据类型

转载 作者:行者123 更新时间:2023-12-01 23:21:55 25 4
gpt4 key购买 nike

我在尝试获取 OrElse 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))

我确信这可以写得更简洁,但我感到困惑的是为什么最后一行会导致此错误,因为它似乎同时包含 rangedValuenonRangedValue 是 Option[Double] 类型

感谢您的帮助

最佳答案

类型错误是

rangedValue.getOrElse(nonRangedValue)

因为 getOrElse 这里需要 Double 参数,但是 nonRangedValueOption[Double]。也许尝试使用 orElse 而不是 getOrElse

val valueOptDouble: Option[Double] = rangedValue orElse nonRangedValue

关于scala 选项和数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67990863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com