如何删除找到的:AnyVal是否必需:在scala中加倍?

时间:2018-12-12 09:14:54

标签: scala scala-collections type-mismatch

我正在遍历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应该是双精度的,但发现是AnyVal。提供我任何解决方案,或者让我知道我做错了什么。

1 个答案:

答案 0 :(得分:5)

欢迎来到。

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

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