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

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