gpt4 book ai didi

scala - scala.collection.Set [scala.Predef.String]类型的表达式与预期的scala.Predef.Set [scala.Predef.String]类型不符

转载 作者:行者123 更新时间:2023-12-02 10:49:22 24 4
gpt4 key购买 nike

我是编程新手,喜欢使用Scala自学。我遇到了一个似乎无法解决问题的问题。

这是我正在尝试的代码片段。使用的所有 map 都是mutable.Map [String,Any]

def CreateCompleteVoterSet(): Set[String] =

{
val firstSet = concedeVoterMap.keySet.diff(voterMap.keySet)
val secondSet = emoteVoterMap.keySet.diff(voterMap.keySet)
val thirdSet = speedVoterMap.keySet.diff(voterMap.keySet)
var finalSet = voterMap.keySet ++ firstSet ++ secondSet ++ thirdSet

return finalSet

}

它给我的错误是:scala.collection.Set [scala.Predef.String]类型的表达式与预期的scala.Predef.Set [scala.Predef.String]类型不符

我确定我可以找到某种方法将其强制为相同类型,可能是使用toSet(),但是我对错误是什么感到困惑。有人可以给我一些有关为什么会发生错误的见解,并向我指出正确的方向,以找到解决错误的安全方法吗?

最佳答案

因为没有Set的导入,所以Set[String]表示scala.Predef.Set(scala.Predef._在所有Scala文件中自动导入)。这是scala.collection.immutable.Set的别名。但是keySetscala.collection.mutable.Map方法返回scala.collection.Set,它是scala.collection.immutable.Set(和scala.collection.mutable.Set的超型,与问题无关)。将scala.collection.Set++结合仍会为您提供scala.collection.Set

简单的解决方案是将返回类型更改为scala.collection.Set,除非您出于其他原因实际上需要scala.collection.immutable.Set

关于scala - scala.collection.Set [scala.Predef.String]类型的表达式与预期的scala.Predef.Set [scala.Predef.String]类型不符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39109952/

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