我有一个奇怪的问题。我正在尝试编写一个简单的隐式类:
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):字符串映射+(k→map.getOrElse(k,0)+1)
这篇帖子似乎与Scala相似-类型不匹配;找到了Int,它是必需的String,但是对我来说,我犯了同样的错误似乎并不明显。我在Scala中使用隐式类和泛型还很陌生,因此很可能在这里遗漏了一些明显的东西。关于为什么出现此错误的任何帮助或解释都将是惊人的。
提前致谢。
问题似乎与括号有关。将内部表达式括在括号中,如下所示:
map + (k -> (map.getOrElse(k, 0) + 1))
您提到的其他帖子有不同的问题。在那篇文章中,Int
被用作类型参数,在这里不是这种情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句