我收到「error:type arguments [Any]不符合特性Cloneable的類型參數邊界[+ A <:AnyRef]」的錯誤消息,我可以不要讓頭或尾巴。在for循環和條件語句中添加到scala映射
具體地說,
var M = mutable.Map[Int, mutable.Set[Int]]()
for(i <- 1 to 100; j <- 1 to 100) {
if(!M.contains(i)) {M += i -> mutable.Set[Int](j)}
else {M(i) += j}
}
(實際上,我試圖更復雜的東西,但是這是調整和簡化爲最小誤差生成代碼)
和上面的代碼的最後一行生成錯誤消息。如果我進一步剝離它
for(i <- 1 to 100; j <- 1 to 100) {
if(!M.contains(i)) {M += i -> mutable.Set[Int](j)}
}
它的工作原理!
如何使上述代碼有效?
作爲邊注,'M + = I - >(M.getOrElse(I,mutable.Set [INT]())+ j)的'將是一個稍微更習慣寫出循環體的方式。 –
@Travis謝謝!這是我一直在尋找的解決方案。如果您將您的評論轉換爲答案,我很樂意選擇它。 – JasonMond
謝謝,但我認爲下面的答案可能會更好地解決提出的問題? –