Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

반환과 점프

코틀린은 3개의 점프 포현식을 제공한다.
  1. return : return을 사용하고 있는 함수 혹은 익명함수에서 값을 반환한다.
  2. break : 현재 루프를 빠져나간다.
  3. continue : 현재 루프의 다음 스탭을 진행한다.
이들 모든 표현식은 다른 표현식의 일부로 사용 할 수도 있다.
val s = person.name ?: return

Break와 Continue Label

코틀린은 모든 표현식에 label을 붙일 수 있다. 라벨은 식별자 뒤에 @를 붙이는 식으로 완성한다. 예를 들어 abc@, fooBar@들은 유효한 라벨이다. 이들 라벨을 표현식 앞에 두면 된다.
loop@ for (i in 1..100) {
    // ...
}
이제 breakcontinue를 호출할 때, 라벨을 명시 할 수 있다.
loop@ for (i in 1..100) {
    for (j in 1..100) {
        if (...) break@loop
    }
}
특정 조건을 만족한 상태에서 break가 호출되면 설정된 라벨(위의 경우 loop@로)이동을 한다.

Return Label

토클린은 중첩된 루프 및 조건문을 허용한다. 개발자는 return을 이용해서 외부 함수에 값을 반환할 수 있다.
fun foo() {
    ints.forEach {
        if (it == 0) return
        print(it)
    }
}
일반적으로 return을 호출하면 가장 가까운 함수를 빠져나간다. 위의 경우 foo 함수를 빠져간다. 라벨을 이용하면 람다식에서 반환할 수 있다.
fun foo() {
    ints.forEach {
        if (it == 0) return@forEach
        print(it)
    }
}
람다식대신 익명함수를 사용 할 수 있는데, 익명함수에서 return 함수를 사용하면, 익명함수에서 반환한다.
fun foo() {
    ints.forEach(fun(value: Int) {
        if (value == 0) return
        print(value)
    })
}