[英]Is there *any* difference between map.updated(k,v) and map + (k,v)? I'm getting a compile error on one but not the other
我是Scala的新手(大約一個月)。 我剛遇到類型檢查錯誤,我無法弄清楚
此代碼片段按預期方式工作。
def combine(m: Map[Char, Int], tup: (Char, Int)): Map[Char,Int] = tup match {
case (key: Char, value: Int) => m updated (key, m.getOrElse(key, 0) + value)
}
該代碼段給出了value
的類型不匹配錯誤
def combine(m: Map[Char, Int], tup: (Char, Int)): Map[Char,Int] = tup match {
case (key: Char, value: Int) => m + (key -> m.getOrElse(key, 0) + value)
}
found : Int
required: String
case (key: Char, value: Int) => m + (key -> m.getOrElse(key, 0) + value)
^
現在, 地圖上的文檔說, ms updated (k,v)
等同於ms + (k->v)
但事實並非如此。
這是我的設置:
SBT version 0.13.8
Scala version 2.11.8
Java SDK 1.8
IntlliJ IDEa
key -> m.getOrElse(key, 0) + value
表示(key->m.getOrElse(key, 0)) + value
。 因此,有效地,您正在嘗試將Int
添加到元組,這並不奇怪,這是行不通的。
嘗試使用括號: m + (key -> (m.getOrElse(key, 0) + value))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.