如何为循环编写复杂的Kotlin

 2021-04-26 

How to write complex Kotlin for loop

编写像for (i in 0..10)这样的简单循环很容易,但是如何编写像这样的更复杂的循环:

1
for (byte i = 1 << 7; i != 0; i >>= 1)

1
for (byte i = 0x01; i != 0; i <<= 1)

感谢您的帮助。


这不是Kotlin中for循环的作用。您可以改用普通的while语句。

1
2
3
4
5
var i: Int = 1 shl 7
while (i != 0) {
    // . . .
    i = i shr 1
}


如果您不喜欢var并且可以使用Sequence,也可以使用类似generateSequence的名称,例如:

1
2
3
4
5
6
7
generateSequence(1 shl 7) {
  it shr 1
}
    .takeWhile { it != 0 }
    .forEach { ... }

// or: generateSequence(1 shl 7) { (it shr 1).takeIf { it != 0 } }.forEach { ... }

否则,迈克尔斯(Michaels)关于使用while的答案就很好。