3.4.2 for 루프와 이터러블
코틀린의 for 루프를 사용하면 컬렉션과 비슷하게 여러 값이 들어있을 수 있는 값에 대한 루프를 수행할 수 있다. 예를 들어 배열 원소에 대한 for 루프를 수행해서 원소의 합계를 구할 수 있다.
fun main() { val a = IntArray(10) { it*it } // 0, 1, 4, 9, 16, … var sum = 0 for (x in a) { sum += x } println("Sum: $sum") // Sum: 285 }
루프는 다음 세 부분으로 이뤄진다.
1. 이터레이션 대상을 담을 변수 정의(x)
2. 이터레이션에 사용할 값들이 담겨 있는 컨테이너를 계산하기 위한 식(a)
3. 루프 몸통에 해당하는 문({ sum += 1 }). 이터레이션 시 이 몸통이 실행된다.
이터레이션 변수는 루프 몸통 안쪽에서만 접근할 수 있으며 매 루프마다 자동으로 새로운 값이 들어간다. 일반 변수와 달리 루프 변수에는 val이나 var를 붙이지 않는다는 점과 루프 변수는 자동으로 불변 값이 된다는 점에 유의하라. 즉, 루프 몸통에서 루프 변수를 변경할 수는 없다. 가장 단순한 루프 변수 정의는 간단한 식별자다. 원한다면 루프 변수의 타입을 지정할 수도 있지만, 실전에서는 거의 쓸 일이 없다.
for (x: Int in a) { sum += x }