如何在 Kotlin 中使用数组索引作为 start/end 点进行反向循环?
How to make reversed for loop with array index as a start/end point in Kotlin?
现在我正在尝试为 loop.The 做一个简单的反转方法
for(i in start downTo end)
但是,如果我使用数组作为 start/end 点呢?
你可以从最后一个通过取 size - 1
到 0 计算的索引循环,如下所示:
for (i in array.size - 1 downTo 0) {
println(array[i])
}
更简单,使用 lastIndex
扩展 属性:
for (i in array.lastIndex downTo 0) {
println(array[i])
}
或者您可以采用 indices
范围并将其反转:
for (i in array.indices.reversed()) {
println(array[i])
}
除了第一个 之外,还有一些其他变体。
for (i in (0..array.lastIndex).reversed())
println("On index $i the value is ${array[i]}")
或使用withIndex()
together with reversed()
array.withIndex()
.reversed()
.forEach{ println("On index ${it.index} the value is ${it.value}")}
或使用 for 循环相同:
for (elem in array.withIndex().reversed())
println("On index ${elem.index} the value is ${elem.value}")
或者如果不需要索引
for (value in array.reversed())
println(value)
留在这里以备不时之需
我创建了一个扩展函数:
public inline fun <T> Collection<T>.forEachIndexedReversed(action: (index: Int, T) -> Unit): Unit {
var index = this.size-1
for (item in this.reversed()) action(index--, item)
}
现在我正在尝试为 loop.The 做一个简单的反转方法 for(i in start downTo end)
但是,如果我使用数组作为 start/end 点呢?
你可以从最后一个通过取 size - 1
到 0 计算的索引循环,如下所示:
for (i in array.size - 1 downTo 0) {
println(array[i])
}
更简单,使用 lastIndex
扩展 属性:
for (i in array.lastIndex downTo 0) {
println(array[i])
}
或者您可以采用 indices
范围并将其反转:
for (i in array.indices.reversed()) {
println(array[i])
}
除了第一个
for (i in (0..array.lastIndex).reversed())
println("On index $i the value is ${array[i]}")
或使用withIndex()
together with reversed()
array.withIndex()
.reversed()
.forEach{ println("On index ${it.index} the value is ${it.value}")}
或使用 for 循环相同:
for (elem in array.withIndex().reversed())
println("On index ${elem.index} the value is ${elem.value}")
或者如果不需要索引
for (value in array.reversed())
println(value)
留在这里以备不时之需
我创建了一个扩展函数:
public inline fun <T> Collection<T>.forEachIndexedReversed(action: (index: Int, T) -> Unit): Unit {
var index = this.size-1
for (item in this.reversed()) action(index--, item)
}