수 범위에 대한 일반적인 루프를 어떻게 수행할 수 있을까? 이런 경우에는 앞 절에서 보여준 진행 타입을 사용해야 한다. 배열에 있는 원소 중에 인덱스가 짝수인 원소들만 두 배로 변경하고 싶다고 하자.
val a = IntArray(10) { it*it } // 0, 1, 4, 9, 16, ... for (i in 0..a.lastIndex) { // 0, 1, 2, 3, ... if (i % 2 == 0) { // 0, 2, 4, 6, ... a[i] *= 2 } }
이 루프 간격을 사용한 진행으로 더 간편하게 작성할 수도 있다.
for (i in 0..a.lastIndex step 2) { // 0, 2, 4, 6, ...
a[i] *= 2
}
문자열과 배열에는 원소나 문자의 인덱스 범위를 제공하는 indices라는 프로퍼티가 들어있다.
val a = IntArray(10) { it*it } // 0, 1, 4, 9, 16, ... for (i in a.indices step 2) { // 0, 2, 4, 6, ... a[i] *= 2 }