Scala 在for循环中分配var arraybuffer:";重新分配给val";
正如标题中所说,我不能在forScala 在for循环中分配var arraybuffer:";重新分配给val";,scala,for-loop,Scala,For Loop,正如标题中所说,我不能在for循环中重新分配类型为Arraybuffer(Arraybuffer(Int,Int),Int)的变量: 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 } {
循环中重新分配类型为Arraybuffer(Arraybuffer(Int,Int),Int)
的变量:
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
}
}
var ab1=ArrayBuffer(le4:*)
var ab2=ab1映射(ligne=>(ArrayBuffer(ligne.\u 1:\u*),ligne.\u 2))
println(“ab:+ab2)
为了{
i ab2(i-1)。1(j-1)。2+ab2(i)。1(j)。1
案例u=>ab2(i-1)。1(j)。2+ab2(i-1)。1(j-1)。1+ab2(i)。1(j)。1
}
}
关键的一点是ab2
被声明为var,但其内部Int的更改被拒绝。为什么?在var
和mutable
对象之间有区别
var
可以随意重新分配其值
mutable
对象可以重新分配其字段。像一个有var
s的对象
您正试图在ab2
中设置元组的_2
字段;元组是不可变的,这就是它导致编译器错误的原因
重新考虑用于此操作的数据结构。collection.mutable.Map
可能更好,或者任何其他具有update
方法的方法都可以允许您更改其中的值。在var
和mutable
对象之间存在差异
var
可以随意重新分配其值
mutable
对象可以重新分配其字段。像一个有var
s的对象
您正试图在ab2
中设置元组的_2
字段;元组是不可变的,这就是它导致编译器错误的原因
重新考虑用于此操作的数据结构。collection.mutable.Map
可能更好,或者任何其他具有update
方法(允许您更改其中的值)的方法都更好。可能重复的