이번 글에서는 코틀린의 흐름제어에 대해서 알아보도록 하겠습니다.
흐름제어
코틀린에서 흐름제어가 가능하도록 해주는 키워드는 return, continue, break이 있습니다.
return에 대해서는 함수를 설명할 때 이야기했었는데요.
함수 내에서 return을 만나면 프로그램은 뒤에 더 실행할 코드가 있든 없든 즉시 함수를 종료시킵니다.
그리고 return을 제외한 두 가지(continue, break)은 사실 반복문 내에서만 사용됩니다.
즉, 반복문의 흐름을 제어한다는 뜻이죠.
그럼 두 흐름제어문이 각각 어떤 역할을 하는지 알아봅시다.
continue
먼저 continue입니다.
continue에 대해 알아보기 전에 continue의 사전적 의미에 대해 생각해보고 어떤 역할을 하는지 한 번 생각해봅시다.
아시다시피 continue는 '계속하다'라는 뜻을 가지고 있습니다.
그렇다면 반복문에서 무언가 계속한다는 뜻일 것 같은데 어떤 의미일까요?
continue는 반복문 내에서 실행될 시 현재 실행 중인 반복을 종료하고 다음 반복으로 넘어가게 됩니다.
어떤 뜻인지 코드를 통해서 알아봅시다.
fun main() {
for(i in 0..9){
println("Hello")
continue
println("World!")
}
}
위의 코드는 for문을 사용해 Hello와 World!라는 문자열을 총 10번 출력시키려고 하고 있습니다.
그런데, 두 문자열을 출력하는 코드 중간에 continue를 끼워 넣고 실행시켜보았습니다.
그랬더니 Hello문자열은 정상적으로 출력되지만, World라는 문자열은 단 한 개도 출력되지 않은 것을 볼 수 있습니다.
이렇듯이 반복문 내에서 continue를 실행시킬 경우 해당 반복을 즉시 종료하고 다음 반복으로 넘어가게 됩니다.
현재 반복을 종료하고 다음번 반복을 계속한다. 즉, 건너뛰기라고 할 수 있겠네요.
break
다음은 break에 대해서 알아봅시다.
마찬가지로 break의 사전적 의미를 생각해보면 깨다, 부수다 등의 의미가 있는데, 과연 어떤 기능을 할까요?
break은 반복문 내에서 실행될 경우 그 즉시 해당 반복문 자체를 종료시킵니다.
이는 continue처럼 여러 번의 반복 중에서 한 번의 반복만 넘기는 것이 아니고, 그 반복문 자체를 종료시킨다는 의미입니다.
코드를 통해 한 번 확인해봅시다.
fun main() {
for(i in 0..9){
println("Hello")
break
println("World!")
}
}
방금 전 코드에서 continue를 break으로 바꾸기만 한 코드입니다.
실행 결과를 확인해보면 이번에는 Hello라는 문자열 단 하나만 출력된 것을 볼 수 있습니다.
이는 반복문의 첫 번째 반복에서 break을 실행시켰기 때문에 즉시 반복문을 종료시킨 것입니다.
이렇게 break과 continue를 사용하면 원하는 타이밍에 반복문의 흐름을 제어할 수가 있는데요.
코틀린에서는 이에 그치지 않고 더 편리한 기능을 제공하고 있습니다.
lable
그것은 바로 lable기능을 지원한다는 것입니다.
보통 흐름제어의 경우 다중반복문을 완전히 종료시키고 싶을 때
안쪽의 반복문을 종료시킨 뒤, 다시 조건을 검사해서 바깥쪽의 반복문도 break으로 종료시켜야 했습니다.
하지만 이 lable은 다중반복문에서 특정 반복문에 이름을 붙여 안쪽에 있는 반복문 실행에서도
바깥쪽에 있는 반복문을 종료시킬 수 있는 등, 특정한 반복문을 지정하여 종료시킬 수 있는 기능입니다.
fun main() {
exam@for(i in 0..9){
for(j in 0..9){
println(j)
if(j == 5)
break@exam
}
}
}
lable을 지정해주는 방법은 for문의 키워드 앞에 "lable이름@"을 붙여주시면 끝입니다.
그리고 continue또는 break문뒤에 @lable이름 과 같이 사용해 반복문을 지정하여 제어할 수 있습니다.
위의 코드에서는 본래 i가 0~9까지, j가 0~9까지 증가하는 총 100번의 반복의 수행했어야 합니다.
하지만 안쪽 반복문에서 j가 5가 되면 바깥쪽 반복문을 break하도록 설정했기 때문에 6번만 반복한 것을 볼 수 있습니다.
이러한 흐름제어를 적절하게 사용하면 프로그래머가 반복문을 더 유연하게 사용할 수 있을 것입니다.
이번 글은 이 정도로 마치도록 하겠습니다.
감사합니다.
'프로그래밍 언어 > 코틀린' 카테고리의 다른 글
코틀린 12. 클래스 (0) | 2020.12.24 |
---|---|
코틀린 11. 입출력 (0) | 2020.12.23 |
코틀린 9. 반복문 (0) | 2020.12.22 |
코틀린 8. 조건문 (0) | 2020.12.22 |
코틀린 7. Nullable변수 (0) | 2020.12.21 |