2016-07-27 59 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

相關問題