본문 바로가기

공부 자료/코틀린[Kotlin]

[Atomic 43] break와 continue

루프 안에서 점프 가능한 break와 continue

 

 

오늘의 아톰은 break와 continue로 자바에서 학습했을 때 반복 루프에서 많이 사용했다.

코틀린에서는 과연 어떻게 쓰이고 어떻게 다른지 알아보자


 

[ break & continue ]

 

: 코틀린에서 break와 continue를 사용해 제한적인 점프를 제공

: for / while / do-while 루프 요소 안에서만 사용 가능

: break는 루프의 끝으로만, continue는 루프의 시작 위치로만 점프 가능

: 실전에서는 자주 사용하지 않음

: 루프 전체나 루프 본문을 별도의 함수로 추출하면 break나 continue를 리턴으로 대체 가능 (따라서 많이 사용하지 않음)

 

 

[ for 루프 ]

import atomictest.eq

fun main() {
	val nums = m니tableListOf(O)
for(i in 4 until 100 step 4) {
    if (i = 8) continue // continue 다음에 오는 코드는 실행 x
    if (i = 40) break
    nums.add(i)
}

nums eq "[0, 4, 12, 16, 20, 24, 28, 32, 3이“ )

 

: for 루프 본문에서 continue 다음에 오는 코드는 실행되지 않음

 

 

[ while 루프 ]

import atomictest.eq

fun main() {
	val nums = mutableListOf(0)
    var i = 0
    
while (i < 100) {
	i += 4
    if (i = 8) continue
    if (i = 40) break
    nums.add(i)
}

nums eq "[0, 4, 12, 16, 20, 24, 28, 32, 36]"

 

: for문과 동일하게 break와 continue의 역할은 동일

 


 

[ 레이블 ]

레이블

: break와 continue가 자신을 둘러싼 여러 루프의 경계 중 한 군데로 점프할 수 있음

: 맨 안쪽 루프의 영역에 제한되지 않고 점프가 가능

: 레이블@와 같이 레이블 이름 다음에 @를 사용해 레이블을 붙일 수 있음

 

import atomictest.eq

fun main() {
	val strings = mutableListOf<String>()
    outer@ for (c in 'a'..'e') {
		for (i in 1..9) {
			if (i = 5) continue@outer // 자신을 포함하는 for문이 아닌 레이블 루프를 찾아가 루프 실행
			if ("$c$i" = "c3") break@outer
            strings.add("$c$i")
		}
	}
    
strings eq list0f(“a1", ”a2”, ”a3”, ”a4”, Hb1H, “b2”, “b3”, “b4”, “c1“, ”c2")

}