본문 바로가기
Android/안드로이드 스터디(Kotlin)

Kotlin] 4. 레이블

by 김마리님 2020. 12. 4.

이건 자바에 없던 기능인데..

break를 하면 반복문 밖으로 빠져나간다. 그런데 반복문이 두개라면?! 가장 가까이의 하나만 빠져나가고 나머지는 빠져나가지 못하는 사태가 발생한다. 그러니까..... 다른 조건문을 적용해주던가 하는 사태가 발생한다. 

그러나 코틀린은 반복문 앞에 이름같은걸 붙일 수 있다.

예시를 본다.

 

fun main(args: Array<String>): Unit {

    var x = 0
    var y = 0

    while (x<=20) {
    
        y=0
        
        while (y<= 20){
            if(x+y ==15 && x-y == 5)
                break
                
            y+=1

        }
        
        x+=1

    }

    println("x : $x, y : $y")

}

 

 

이 문장 같은 경우는 break가 한번만 적용하기 때문에 결국 x+1이 적용되게 되고... println을 만나지 못한 채, 맨 바깥의 에 있는 조건문인 x<=20 이 false가 될 때까지 돌아야한다. 그래서 결과값이

 

x : 21, y : 21

 

로 나오게 된다. 

 

그런데 코틀린의 레이블을 붙이게 되면..

 

fun main(args: Array<String>): Unit {

    var x = 0
    var y = 0

    outer@ while (x<=20) {
        y=0
        while (y<= 20){
            if(x+y ==15 && x-y == 5)
                break@outer
            y+=1

        }
        x+=1

    }

    println("x : $x, y : $y")

}

 

이렇게 @를 이용해 [outer] 과 같은 이름을 붙여주고, break를 통해 탈출할 반복문을 일러두면, 그 반복문을 탈출하게 된다. 

 

따라서, 이름이 불린 가장 바깥의 반복문을 빠져나오면서

x : 10, y : 5

라는 결과값을 얻게 된다.

반응형

'Android > 안드로이드 스터디(Kotlin)' 카테고리의 다른 글

Kotlin] 6. 디폴트 인수  (0) 2020.12.04
Kotlin] 5. Unit?  (0) 2020.12.04
Kotlin] 3. When문  (0) 2020.12.03
Kotlin] 2. 타입 별명  (0) 2020.12.03
Kotlin] 1. 자료형에 대해서  (0) 2020.12.02