【问题标题】:How to remove found :AnyVal required :Double in scala ?如何删除找到的:需要AnyVal:scala中的Double?
【发布时间】:2018-12-12 23:13:07
【问题描述】:

我正在遍历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。如果我做错了什么,请提供任何解决方案或让我知道。

【问题讨论】:

    标签: scala scala-collections type-mismatch


    【解决方案1】:

    欢迎来到 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)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多