如标题中所述,我无法Arraybuffer(Arraybuffer(Int,Int),Int)
在for中重新分配类型的变量loop
:
var ab1 = ArrayBuffer(le4: _*)
var ab2 = ab1 map (ligne => (ArrayBuffer(ligne._1: _*), ligne._2))
println("ab:" + ab2)
for {
i <- 1 to ab2.length
j <- 0 to i
} {
ab2(i)._1(j)._2 = j match {
case 0 => ab2(i - 1)._1(0)._2 + ab2(i)._1(j)._1
case i => ab2(i - 1)._1(j - 1)._2 + ab2(i)._1(j)._1
case _ => ab2(i - 1)._1(j)._2 + ab2(i - 1)._1(j - 1)._1 + ab2(i)._1(j)._1
}
}
Run Code Online (Sandbox Code Playgroud)
关键点是ab2
声明为var但是其中的Int的更改被拒绝.为什么?
a var
和mutable
对象之间存在差异.
var
可以随意重新分配其价值mutable
对象可以有它的领域重新分配.就像一个带有var
s 的对象你试图在里面设置_2
一个元组的字段ab2
; 元组是不可变的,这就是它导致编译器错误的原因.
重新考虑您用于此操作的数据结构.A collection.mutable.Map
可能更好,或者其他任何具有update
允许您更改其内部值的方法的东西.
归档时间: |
|
查看次数: |
514 次 |
最近记录: |