我收到“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
谢谢,但我认为下面的答案可能会更好地解决提出的问题? –