더북(TheBook)

다음은 for 루프 안에 continuebreak를 함께 사용한 예제다.

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]의 로직은 서로 겹치지 않기 때문에 두 문장의 순서를 바꿔도 된다. 두 줄을 바꾸고 출력이 달라지지 않음을 확인하라.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.