다음은 for 루프 안에 continue와 break를 함께 사용한 예제다.
BreakAndContinue/ForControl.kt
import atomictest.eq
fun main() {
val nums = mutableListOf(0)
for (i in 4 until 100 step 4) { // [1]
if (i == 8) continue // [2]
if (i == 40) break // [3]
nums.add(i)
} // [4]
nums eq "[0, 4, 12, 16, 20, 24, 28, 32, 36]"
}
이 예제는 여러 Int를 가변 List에 넣는다.
• [2]의 continue는 [1] 지점의 여는 중괄호에 해당하는 루프 시작 지점으로 점프한다. 이 continue 문은 루프의 다음 이터레이션을 시작하면서 실행을 ‘이어서’ 수행한다. 점프가 이뤄지는 경우 for 루프 본문에서 continue 다음에 오는 코드가 실행되지 않는다는 점에 유의하라. 따라서 i == 8인 경우 nums.add(i)가 실행되지 않아서 nums 출력에서 8을 볼 수 없다.
• i == 40이면 [3]의 break가 실행된다. break는 [4]의 루프 영역 밖으로 for 루프를 ‘깨고 나가서’ 루프를 끝낸다. 그래서 40과 그 이후의 수는 List에 추가되지 않는다.
• [2]와 [3]의 로직은 서로 겹치지 않기 때문에 두 문장의 순서를 바꿔도 된다. 두 줄을 바꾸고 출력이 달라지지 않음을 확인하라.