반복문을 반복하고 있다가, 중간에 반복문을 멈추거나,
해당 회차를 건너뛰고 싶을 때가 있습니다.
이럴때 쓰기 좋은 반복문의 흐름 제어 방법에 대해 알아봅시다.
break
for(i in 0 until 10) {
if(i == 5) {
break
}
printin(i)
}
// 출력
>> 0
1
2
3
4
break는 반복문을 탈출하는 키워드입니다.
위 프로그램은 i가 0 부터 10까지 1씩 증가하지만,
i가 5가 되는 순간(i == 5) break를 걸어 반복문을 탈출하는 프로그램입니다.
주로 if / when문과 같이 쓰이곤 합니다.
2중 for문에서 break는 어떻게 동작할까?
for(i in 0 until 3) {
for(j in 0 until 3) {
if(j == 2) break
println("$i $j")
}
}
// 출력
>>> 0 0
0 1
1 0
1 1
2 0
2 1
break는 가장 가까운 for문에만 적용됩니다.
j == 2 일때, 가장 가까운 for문인 안쪽 for(j in 0 until 3)만 탈출하는 것을 볼 수 있으며,
바깥쪽 for문은 그대로 반복하는 것을 볼 수 있습니다.
continue
for(i in 0 until 5) {
if(i == 3) continue
if(i == 4) continue
println(i)
}
// 출력
>> 0
1
2
5
continue는 해당 회차를 넘기는 키워드입니다.
continue 아래의 코드를 실행하지 않고 넘기고 싶을 때 사용합니다.
for문에 라벨 붙이기
first@ for(i in 0 until 3) {
second@ for(j in 0 until 3) {
if(j == 2) break@first
println("$i $j")
}
}
}
// 출력
>>> 0 0
0 1
for문에 라벨링을 붙일 수 있습니다.
위 코드는 앞의 2중 for문에 라벨링을 붙인 코드입니다.
바깥쪽 for문은 first, 안쪽 for문은 second로 라벨링을 해줬고,
j == 2인 순간 first(바깥쪽) for문을 탈출하도록 작성했더니,
실제로 바깥쪽 for문이 break 되었습니다.
이는 continue, return 등에서도 동일하게 쓰일 수 있습니다.
즉, 라벨링을 통해 다중 for문에서 어떤 for문을 제어할 것인지가 가능합니다.
2중 for문을 탈출하기 위해 별도의 boolean 변수를 두어 제어했던 것 같은데,
라벨링을 통해 간편하게 제어가 가능할 것 같네요.
'코틀린 파헤치기 > 1부. 코틀린 기초' 카테고리의 다른 글
[코파기 1부] 부록. 자바/코틀린의 네이밍 규칙 (0) | 2023.03.15 |
---|---|
[코파기 1부] 11. 코틀린과 함수 (Function) (0) | 2023.03.15 |
[코파기 1부] 9. 코틀린과 반복문 (1) : for, while, do-while, repeat, forEach (2) | 2023.03.15 |
[코파기 1부] 8. 코틀린과 리스트 (List) (0) | 2023.03.15 |
[코파기 1부] 7. 코틀린과 배열 (Array) (0) | 2023.03.14 |