如何删除 found :AnyVal required :Double in scala ?

How to remove found :AnyVal required :Double in scala ?

我正在遍历 Scala Map,我的代码出现 type mismatch 错误。这是我正在尝试做的事情。

private var cumulativeCapacity:Map[String , Double] = Map()
private var cumulativeDelay:Map[String ,Double] = Map()

cumulativeCapacity.keys.foreach { linkId =>
    val delay = cumulativeDelay.get(linkId).getOrElse(0)
    val capacity = cumulativeCapacity.get(linkId).getOrElse(0)
    val bin = largeset(capacity)
}

所以错误来自 val bin = largeset(capacity)capacity 应该是 double 但发现 AnyVal。提供任何解决方案或让我知道我做错了什么。

欢迎来到 SO。

您遇到的问题是由于您在 Map 中找不到密钥时提供 Int 作为默认值,而不是 Double.如果您将 0 更改为 0.00D,它应该可以工作。即

cumulativeCapacity.keys.foreach { linkId =>
  val delay = cumulativeDelay.getOrElse(linkId, 0D)
  val capacity = cumulativeCapacity.getOrElse(linkId, 0D)
  val bin = largeset(capacity)
}