return
•
가장 가까운 함수나 익명 함수(ex. 람다)에서 반환한다.
•
기본적으로 현재 함수의 실행을 종료하고 함수의 호출 지점으로 값을 반환한다.
fun foo() {
if (someCondition) {
return // 현재 foo 함수에서 반환합니다.
}
// ...
}
Kotlin
복사
break
•
가장 가까운 루프를 즉시 종료한다.
while (x > 0) {
if (x == 5) {
break // x가 5가 되면 루프를 종료합니다.
}
x--
}
Kotlin
복사
continue
•
가장 가까운 루프에서 현재 반복의 나머지 부분을 건너뛰고 다음 반복을 진행한다.
while (x > 0) {
x--
if (x % 2 == 0) {
continue // x가 짝수일 경우, 아래의 코드(출력문 등)는 건너뛰고 다음 반복으로 넘어갑니다.
}
println(x) // x가 홀수일 경우만 출력합니다.
}
Kotlin
복사
Return to labels
•
label을 사용하여 break와 continue의 범위를 지정할 수 있다.
•
식별자 뒤에 @ 를 붙여 표시한다.
•
여러 겹의 루프에서 특정 루프만 종료하거나 계속할 수 있다.
//break에 label 사용 예제
loop@ for (i in 1..100) {
for (j in 1..100) {
if (someCondition) {
break@loop // 'loop' 레이블이 붙은 외부 루프를 종료합니다.
}
}
}
//continue에 label 사용 예제
loop@ for (i in 1..100) {
for (j in 1..100) {
if (someCondition) {
continue@loop // 'loop' 레이블이 붙은 외부 루프의 다음 반복으로 넘어갑니다.
}
}
}
Kotlin
복사
•
함수 안에 중첩된 함수, 람다 표현식, 객체 표현식 등이 있을 때 label을 사용하여 해당 함수에서 반환하는 것이 아닌 특정 함수, 표현식에서 반환할 수 있다.
//람다 표현식에 label 사용 예제
fun foo() {
listOf(1, 2, 3, 4, 5).forEach lit@{
if (it == 3) return@lit // 'lit' 레이블이 붙은 람다 표현식에서 반환합니다.
print(it)
}
print("레벨을 명시적으로 사용한 후의 완료")
}
//암묵적 label 사용 예제
fun foo() {
listOf(1, 2, 3, 4, 5).forEach {
if (it == 3) return@forEach // 'forEach' 람다 표현식에서 반환합니다.
print(it)
}
print("암묵적 레벨을 사용한 후의 완료")
}
Kotlin
복사
•
익명 함수 내의 return은 해당 익명 함수에서만 반환한다.
//익명 함수에 label 사용 예제
fun foo() {
listOf(1, 2, 3, 4, 5).forEach(fun(value: Int) {
if (value == 3) return // 익명 함수에서 반환합니다.
print(value)
})
print("익명 함수 사용 후 완료")
}
Kotlin
복사
•
label을 사용하면 break와 유사한 기능으로 사용할 수 있다.
fun foo() {
run loop@{
listOf(1, 2, 3, 4, 5).forEach {
if (it == 3) return@loop // 'loop' 레이블이 붙은 람다에서 반환합니다.
print(it)
}
}
print("중첩 루프 사용 후 완료")
}
Kotlin
복사
•
label 을 이용한 return 시 특정 값을 반환할 수 있다.
fun main() {
val result = run labelA@ {
println("Inside run block")
// 레이블이 붙은 'run' 블록에서 1을 반환
return@labelA 1
}
println("Result: $result") // Result: 1
}
Kotlin
복사