[kotlin]Return and Jumps (break 문, continue 문, return 문)

2018. 6. 15. 15:20kotlin-이론

Return and Jumps


코틀린에서는 자바와 같이 break, continue, return을 동일하게 사용한다. 하지만 몇가지 다른 점이 있는데 이를 알아보자!!



Label -Break, Continue


loop@ for(i in 1..10){
for (j in 1..10){
println("$i + $j ")
if (i+j>12) break @loop 
     } 
 }

원래 같이 @loop가 없다면 2번째 반복문이 조건에 만족했을 때 break되지만 @loop라는 라벨을 지정해주면 최상위의 반복문이 종료된다. 라벨의 이름은 아무 이름이나 써도 된다.   Continue에서도 동일하게 사용할 수 있다. 



forEach


case1

fun foo(){
    var ints = listOf(0, 1, 2, 3, 4, 5)
    ints.forEach (
            fun(value:Int){
                if (value == 1) return
                println(value)
            }
    )
}

return이 종료하게 된다면 내부의 fun 익명 함수만 종료하게 된다. forEach의 반복문은 계속해서 반복된다.

 


case2 - 익명함수 없이 사용

fun foo2(){
    var ints = listOf(0, 1, 2, 3, 4, 5)
    ints.forEach {
        if (it == 1) return
        println(it)
    }
}
 ints.forEach ({
        if (it == 1) return
        println(it)
    }) //이런식으로 사용할 수 있다. 

익명함수 없이 사용한다면 ints가 it으로 값 하나씩 전달된다. 첫번 째 조건이 만족해서 return이 되면 forEach문의 반복이 종료되게 된다.  



case3 - 라벨과 함께 사용가능하다. 


fun lablefoo2(){ var ints = listOf(0, 1, 2, 3, 4, 5) ints.forEach loop@{ if (it == 1) return@loop println(it) } }

위와 같은 코드에 label을 추가해주면 return을 만나도 forEach가 종료되지 않는다. 그리고 매번 라벨을 만들어주기 귀찮으면 


ints.forEach { if (it == 1) return@forEach println(it) }

이런 방식으로 사용할 수 있다. 

'kotlin-이론' 카테고리의 다른 글

[kotlin] Class 상속  (0) 2018.06.15
[kotlin]Class  (0) 2018.06.15
[kotlin]코틀린 controlFlow  (0) 2018.06.15
[kotlin]코틀린 BasicType  (0) 2018.06.14
[kotlin] kotlin Basic Syntax java와 비교  (0) 2018.06.13