【问题标题】:Type mismatch, found Int required String类型不匹配,发现 Int 需要 String
【发布时间】:2016-07-27 05:08:32
【问题描述】:

我遇到了一个奇怪的问题。我正在尝试编写一个简单的隐式类:

private implicit class CounterMap[A](map: Map[A, Int]) {
  def updateCounter(k: A): Map[A, Int] =
    map + (k → map.getOrElse(k, 0) + 1)
}

但是当我尝试编译时,出现以下错误:

错误:类型不匹配; 找到 : Int(1) 必需:字符串 map + (k → map.getOrElse(k, 0) + 1)

这篇文章似乎与Scala - type mismatch; found Int, required String 相似,但对我来说似乎并不明显我犯了同样的错误。我对在 Scala 中使用隐式类和泛型还很陌生,所以我很可能在这里遗漏了一些明显的东西。任何关于我为什么会收到此错误的帮助或解释都会令人惊叹。

提前致谢。

【问题讨论】:

    标签: scala


    【解决方案1】:

    问题似乎与括号有关。用括号将内部表达式括起来,如下所示:

    map + (k -> (map.getOrElse(k, 0) + 1))
    

    您提到的其他帖子有不同的问题。在那篇文章中,Int 被用作类型参数,这里不是这样。

    【讨论】:

    猜你喜欢
    • 2018-08-12
    • 2015-04-03
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    相关资源
    最近更新 更多