gpt4 book ai didi

loops - 更改 Kotlin 中的循环索引

转载 作者:IT老高 更新时间:2023-10-28 13:43:51 26 4
gpt4 key购买 nike

如何在 Kotlin 中修改循环变量?

对于我的特殊情况,我有一个 for 循环,在该循环中,对于某些条件,我想跳过下一次迭代:

for(i in 0..n) {
// ...
if(someCond) {
i++ // Skip the next iteration
}
}

但是,当我尝试这个时,我被告知“无法重新分配 val”。

最佳答案

你不能改变当前元素,你需要使用 while 循环来代替:

var i = 0
while (i <= n) {
// do something

if (someCond) {
i++ // Skip the next iteration
}

i++
}

你想做什么?有可能有更惯用的方法来做到这一点。

如果您可以重构此逻辑以跳过 当前 迭代,为什么不使用 continue:

for (i in 0..n) {
if (someCond) {
continue
}
// ...
}

旁注:.. 范围是包容性的,因此循环例如您通常需要 0..(n - 1) 大小的列表 n 更简单地使用 until : 0 直到 n.


在您的具体情况下,您可以使用 windowed ( Kotlin 1.2):

list.asSequence().filter { someCond }.windowed(2, 1, false).forEach { 
val (first, second) = it
// ...
}

asSequence 将列表转换为 Sequence,去除 filterwindowed 的开销,创建一个新的List(因为它们现在都将返回 Sequences)。

如果您希望下一对不包含前一对的最后一个元素,请改用 windowed(2, 2, false)

关于loops - 更改 Kotlin 中的循环索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48458801/

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