Kotlin:当条件为真时重复 n 次

Kotlin: repeat n time while condition is true

我需要重复一段代码最多 n 次,但一旦条件为假就终止循环,如下所示:

val runs = 100
var ctr = 0
var condition = true

while (ctr++ < runs && condition) {
    //stuff and updates
}

这个逻辑是否可以说得更地道些,也许用 repeat?

val runs = 100
var condition = true


for(ctr in (0..runs)){
    if(condition){
        //stuff and updates
    }
}

您可以嵌套 lambda 和 non-locally return to the outer one - 我不会说这很漂亮,但它是一个选项:

run loop@{
    repeat(100) {
        if(!condition) return@loop
        // stuff and updates
    }
}

这是我认为惯用的方法,懒惰地生成一个序列,限制为 100,在第一个停止 condition==true 然后如果不为空则做一些事情(即 condition==true

            generateSequence {
                // do stuff per iteration
                Unit // or whatever value per iteration
            }.take(100).firstOrNull { condition }?.let {
                // on condition
            }