gpt4 book ai didi

loops - 如何在 Kotlin 循环内更改 for 循环的计数器变量值?

转载 作者:行者123 更新时间:2023-12-05 09:03:57 25 4
gpt4 key购买 nike

我是 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
}

我真的希望在循环内更改计数器变量。有没有其他方法可以在 Kotlin 中没有任何错误地实现这一目标?

最佳答案

请注意,for...in 循环不是带计数器的循环,而是 foreach 循环——即使您使用 range 进行迭代(好吧,至少在概念上是这样,因为在内部它实际上是优化为带计数器的循环)。您不能跳转到数组/列表中的另一个项目,因为 for 并不真正“理解”迭代背后的逻辑。即使您能够修改 i 的值,然后在下一次迭代中它将重置为下一项。

您需要使用 while 代替:

var i = 0
while (i < tokens.size) {
if (memory[pointer]!=0)
i=stack.peek()

i++
}

另请注意,您的原始代码包含一个差一错误。在上一次迭代中,i 将变为 tokens.size,这可能不是您需要的。

关于loops - 如何在 Kotlin 循环内更改 for 循环的计数器变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69364237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com