2018. 6. 15. 15:20ㆍkotlin-이론
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 |