각 Kotlin에 대한 현재 색인을 얻는 방법 얻는 방법은 무엇입니까?

각 루프마다 인덱스를 얻는 방법은 무엇입니까? 매초마다 숫자를 인쇄하고 싶습니다.

예를 들어

for (value in collection) {
    if (iteration_no % 2) {
        //do something
    }
}

자바에서는 전통적인 for 루프가 있습니다.

for (int i = 0; i < collection.length; i++)

얻는 방법 i?



답변

@Audi에서 제공하는 솔루션 외에도 다음이 있습니다 forEachIndexed.

collection.forEachIndexed { index, element ->
    // ...
}


답변

사용하다 indices

for (i in array.indices) {
    print(array[i])
}

인덱스뿐만 아니라 가치를 원한다면 withIndex()

for ((index, value) in array.withIndex()) {
    println("the element at $index is $value")
}

참조 : kotlin의 제어 흐름


답변

이 시도; for 루프

for ((i, item) in arrayList.withIndex()) { }


답변

또는 withIndex라이브러리 기능을 사용할 수 있습니다 .

for ((index, value) in array.withIndex()) {
    println("the element at $index is $value")
}

제어 흐름 : if, when, for : while :
https://kotlinlang.org/docs/reference/control-flow.html


답변

당신이 정말로 찾고있는 것은 filterIndexed

예를 들면 다음과 같습니다.

listOf("a", "b", "c", "d")
    .filterIndexed { index, _ ->  index % 2 != 0 }
    .forEach { println(it) }

결과:

b
d


답변

범위 는 다음과 같은 상황에서 읽을 수있는 코드로 이어집니다.

(0 until collection.size step 2)
    .map(collection::get)
    .forEach(::println)


답변