Rut*_*vik 2 variables loops for-loop variable-assignment kotlin
我是 Kotlin 新手,为了练习,我正在将 Java 代码转换为 Kotlin。
这样做时我面临一个问题,即我无法更改 for 循环内的计数器值。它实际上说变量是val
.
for (i in 0..tokens.size){
// some code
if (memory[pointer]!=0)
i=stack.peek() // error here showing : val cannot be reassigned
}
Run Code Online (Sandbox Code Playgroud)
我真的希望在循环内更改计数器变量。有没有其他方法可以在 Kotlin 中实现这一目标而不出现任何错误?
请注意,for...in
循环不是带有计数器的循环,而是 foreach 循环 - 即使您使用 range 进行迭代(好吧,至少在概念上是这样,因为在内部它实际上已优化为带有计数器的循环)。您无法跳转到数组/列表中的另一个项目,因为for
并没有真正“理解”迭代背后的逻辑。即使您能够修改 的值i
,那么在下一次迭代中它也会重置为下一项。
您需要改用while
:
var i = 0
while (i < tokens.size) {
if (memory[pointer]!=0)
i=stack.peek()
i++
}
Run Code Online (Sandbox Code Playgroud)
另请注意,您的原始代码包含一个相差一的错误。在最后一次迭代中,这i
可能tokens.size
不是您所需要的。