Scala-类型不匹配;找到Int,必需的String

WojciechKałuski

我在Scala中遇到类型不匹配的问题。编译器返回错误:

错误:类型不匹配;找到:需要Int:字符串val v3:Int =(v1 + v2)

这是我的功能的代码:

    def sumMaps[T, Int](m1: Map[T, Int], m2: Map[T, Int]): Map[T, Int] = {
        val sameKeys = m1.keySet.intersect(m2.keySet)
        var m3: Map[T, Int] = m1 ++ m2
        for (key <- sameKeys) {
            val v1:Int = m1(key)
            val v2:Int = m2(key)
            val v3:Int = (v1+v2)
            //val v:Int = (m1(key) + m2(key))
            m3 = m3 updated (key, v3)
        }
    m3
}

为什么?知道可能是什么问题吗?

大卫·弗兰克

Int当它是具体类型时,您要重新声明为类型参数。

您应该将方法标题更改为:

def sumMaps[T](m1: Map[T, Int], m2: Map[T, Int]): Map[T, Int] = {

Int是类型参数时,编译器将其替换(v1+v2)为字符串加法,因此变为(v1.toString + v2.toString),这给您带来了问题。

更新

我想出了一个更简单的解决方案来解决您的问题:

def sumMaps[T](m1: Map[T, Int], m2: Map[T, Int]): Map[T, Int] = {
  (for (key <- m1.keySet ++ m2.keySet) yield {
    val v1: Int = m1.getOrElse(key, 0)
    val v2: Int = m2.getOrElse(key, 0)
    key -> (v1 + v2)
  }).toMap
}

或更简单的一个:

def sumMaps[T](m1: Map[T, Int], m2: Map[T, Int]): Map[T, Int] = {
  (m1 ++ m2).transform {
    case (key, _) => m1.getOrElse(key, 0) + m2.getOrElse(key, 0)
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Scala-类型不匹配;找到Int,必需的String

来自分类Dev

Scala类型不匹配。找到的类型,必需_ $ 1

来自分类Dev

使用scala.math.pow折叠List [Int]时,类型不匹配错误:找到Double,必需为Int

来自分类Dev

类型不匹配; 找到:scala.collection.immutable.Stream [String]必需:Play Scala中的字符串?

来自分类Dev

找到Scala Spark类型不匹配的单位,必需为rdd.RDD

来自分类Dev

Scala类型不匹配单位,而不是Int

来自分类Dev

Scala 类型不匹配 [scala]

来自分类Dev

Scala:找到类型不匹配,所需单位:布尔

来自分类Dev

Scala类型不匹配找到Future [A]预期Future [B]

来自分类Dev

用于理解的 Scala 返回类型不匹配;找到:单位

来自分类Dev

Scala mapValues()类型不匹配

来自分类Dev

Scala ADT 类型不匹配

来自分类Dev

Scala 错误:类型不匹配

来自分类Dev

类型不匹配,找到Int必需的字符串

来自分类Dev

类型不匹配; 找到:Int(1)必需:B

来自分类Dev

类型不匹配,找到Int必需的字符串

来自分类Dev

Scala 类型与默认参数类型不匹配

来自分类Dev

找到scala.Int(0)必需Int 0

来自分类Dev

找到:scala.concurrent.Future [Option [Int]]必需:Option [?]

来自分类Dev

for循环,Scala中的类型不匹配

来自分类Dev

Scala 2.10:为什么类型不匹配?

来自分类Dev

Scala中奇怪的类型不匹配错误

来自分类Dev

Scala泛型:类型不匹配

来自分类Dev

Scala类型与泛型不匹配

来自分类Dev

Scala:类型与嵌套泛型不匹配

来自分类Dev

与classOf Scala的类型不匹配的泛型

来自分类Dev

Scala多态回调类型不匹配

来自分类Dev

Scala泛型:类型不匹配

来自分类Dev

与Scala中的Array数组类型不匹配

Related 相关文章

热门标签

归档