[Kotlin][언어공부-7] label
2020. 6. 22. 10:51ㆍAndroid/Kotlin
Label 이라 하면 처음 접하는 것이라 어려울 수 있는데
c의 go to 문을 생각하면 된다.
타언어로 오면서 go to 문을 사용하면 복잡해져서 쓰지 말라는게 정책이였는데
함수형 언어로 가면서 label 정책이 거의 필수가 되어버렸다.
1. Return 할 때 반환 값이 있으면 호출된 함수로 이동 -> return 반환값2. Return@레이블 반환값 -> 해당 레이블로 값을 가지고 복귀함 -> 코드가 실행되는 곳이 이름 없는 함수(익명함수)거나 람다식으로 되어 있으면 이런식으로 사용함 3. break,continue -> 자바와 비슷 break는 반복문을 종료하고 나감 continue는 다음 라인을 무시하고 반복문 처음으로 감.
4. break@레이블,continue@레이블
-> break는 반복문 종료하고 레이블로 나감-> continue는 다음라인을 무시하고 레이블로 이동
// 함수형 언어이기 때문에 리턴되는 곳을 명확히 해야할 필요가 있다
//return 반환값 : 값만 있으면 호출된 함수로 이동
//return@레이블 반환값 .. : 해당 레이블로 값을 가지고 복귀
//break,continue
// break@레이블,continue@레이블 : break는 반복문을 종료 지정한 레이블로 나감, continue는 다음라인을 무시, 지정 레이블로 이동
fun main(args: Array<String>) {
ExitLoop();
println(lambdaReturn)
//함수형 스타일의 호라용
(0..10).forEach{ if (it > 3) return@forEach else println(it)}
}
//@레이블 지정후, break@레이블로 나감
fun ExitLoop() {
HereToExit@ for(i in 0..2) {
for(j in 0..10) {
if(j==5) break@HereToExit;
println("i->$i, j->$j")
}
println("j loop end")
}
println(" i loop end")
}
//이름없는 함수(람다식)의 리턴
val lambdaReturn = Exit@{
if(true) {
return@Exit 3
}
1000
}
반응형
'Android > Kotlin' 카테고리의 다른 글
[Kotlin][언어공부-9] 예외처리 (0) | 2020.06.25 |
---|---|
[Kotlin][언어공부-8] Collection (0) | 2020.06.23 |
[Kotlin][언어공부-6] 제어문 (1) | 2020.06.18 |
[Kotlin][언어공부-5] function (0) | 2020.06.16 |
[Kotlin][언어공부-4] Any형 (0) | 2020.06.10 |