Kotlin阵列切片索引

jucafojl  于 2022-12-19  发布在  Kotlin
关注(0)|答案(4)|浏览(99)

假设我想迭代KotlinIntArray中除了第一个元素之外的所有元素,目前我是这样做的:

fun minimalExample(nums: IntArray): Unit {
    for(num in nums.sliceArray(IntRange(1,nums.size-1))) println(num)
}

有没有像Python中那样简单的语法来完成这个操作(我不想指定nums数组的结束索引):

for (num in nums[1:])
s4chpxco

s4chpxco1#

我认为你可以使用Kotlin的drop,它将删除数组的前n个元素。

fun minimalExampleWithDrop(nums: IntArray): Unit {
    for(num in nums.drop(1)) println(num)
}

minimalExampleWithDrop(intArrayOf(1,2,3,4,5,6))
// 2
// 3
// 4
// 5
// 6

Repl.it

uxh89sit

uxh89sit2#

1作为起始索引的基本for循环

val myList = intArrayOf(1,2,3,4,5,6)

    for(i in 1 until myList.size){
        Log.d(TAG,"${myList[i]}")
    }

或者,由于它是IntArray,您可以将其用作Iterator并跳过here所示的元素

val iterator = myList.iterator()
    // skip an element
    if (iterator.hasNext()) {
        iterator.next()
    }
    iterator.forEach {
        Log.d(TAG,"it -> $it")
    }
58wvjzkj

58wvjzkj3#

你也可以选择使用slice方法,它出现在列表和数组中。下面是这两种方法的例子:

val a = listOf(1, 2, 3, 4)
println(a.slice(1..a.size - 1))

val b = arrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9)
println(b.slice(4..5))

这将打印输出:

[2, 3, 4]
[5, 6]
k10s72fa

k10s72fa4#

为了补充@gil.fernandes的答案,可以将sliceuntil结合使用,如下所示:

val list = arrayOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
println(list.slice(0 until 5))

这将输出:

[0, 1, 2, 3, 4]

相关问题