gpt4 book ai didi

Scala类型不匹配问题(预期Map,发现scala.collection.mutable.HashMap)

转载 作者:行者123 更新时间:2023-12-03 21:20:22 27 4
gpt4 key购买 nike

我仍然是 Scala 程序员新手,如果这个问题看起来很幼稚,很抱歉,但我搜索了一段时间并没有找到解决方案。我使用的是 Scala 2.8,我有一个类 PXGivenZ 定义为:

class PXGivenZ (val x:Int, val z:Seq[Int], val values: Map[Seq[Int], Map[Int, Double]] ){...}

当我尝试将该类的一个元素实例化到另一个程序块中时:
// x is an Int
// z is a LinkedList of Int
...
var zMap = new HashMap[Seq[Int], HashMap[Int, Double]]
...
val pxgivenz = new PXGivenZ(x, z, zMap)

我收到以下错误:
found   : scala.collection.mutable.HashMap[Seq[Int],scala.collection.mutable.HashMap[Int,Double]]
required: Map[Seq[Int],Map[Int,Double]]
val pxgivenz = new PXGivenZ(x, z, zMap)
^

显然我没有得到一些东西:Map[Seq[Int],Map[Int,Double]] 与 HashMap[Seq[Int], HashMap[Int,Double]] 有何不同?还是“可变”类有问题?

在此先感谢任何愿意帮助我的人!

最佳答案

默认情况下,Map在 Scala 文件中导入的是 scala.collection.immutable.Map而不是 scala.collection.Map .当然,就您而言, HashMap 是可变映射,而不是不可变映射。

因此,如果你想要 Mapscala.collection.Map在您的文件中,您必须明确地导入它:

import scala.collection.Map

这种选择的原因是您不会以相同的方式操作不可变和可变结构。因此,scala 默认推断您将使用“最安全”的不可变结构。如果您不想这样做,则必须明确更改它。

关于Scala类型不匹配问题(预期Map,发现scala.collection.mutable.HashMap),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7122558/

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