2016-07-27 79 views
0

我遇到一个奇怪的问题。我试图写一个简单的隐类:类型不匹配,找到Int要求字符串

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

但是当我尝试编译,我得到以下错误:

error: type mismatch; found : Int(1) required: String map + (k → map.getOrElse(k, 0) + 1)

这个职位似乎相似Scala - type mismatch; found Int, required String,但它似乎没有在我看来,我犯了同样的错误。我在Scala中使用隐式类和泛型相当新,所以很可能我在这里忽略了一些明显的东西。任何帮助或解释为什么我得到这个错误将是惊人的。

在此先感谢。

回答

2

问题似乎与括号。将括号内的括号括起来,如下所示:

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

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

+0

箭头确实很好,但你的回答确实揭示了我的代码出了什么问题。问题在于我错过了加法操作的括号。如果你编辑,我会接受你的答案。 – Vikram

+0

啊,好吧。我以为'→'是从某处复制/粘贴的。很高兴知道它为你工作。 –

+0

感谢您的帮助,这让我疯狂:) – Vikram

相关问题