Written by
LSM
on
on
Kotlin - return label
Kotlin return label
label
- 코틀린의 라벨 지시자 : @
- ex) foo@, lit@
return
- ex) foo@, lit@
- 가까이에 있는 한정 함수(enclosing)나 익명함수에 기본적으로 리턴하는 기능
- 코틀린 함수는 nested 형태로 사용할 수 있음
- 일반적인 return은 outer function에 값을 돌려줄 수 있음
1. 일반적인 return
code
fun foo(){
listOf(1, 2, 3, 4, 5).forEach {
if(it == 3) return
println(it)
}
}
result
1
2
- non-local return : 람다 내부에서 return 시 람다 뿐만이 아니라 outer function까지 종료 시키는 것을 의미
- return이 수행되면 가까이에 있는 enclosing function에 리턴을 수행
- 본 코드에서는 foo 함수가 return을 받음
- 람다 내부에서 return을 쓰고 싶을 경우 inline 함수로 작성을 해야함
2. label이 있는 return
code
fun foo() {
listOf(1, 2, 3, 4, 5).forEach lit@{
if(it == 3) return@lit
println(it)
}
}
result
1
2
4
5
- lit@는 람다식을 부를 수 있는 라벨
- return을 수행 시 outer function인 foo로 가는 것이 아니라 lit 라벨을 붙여준 람다식이 받게 됨
- 라벨 대신 람다식 함수로 부를 수 있음
listOf(1, 2, 3, 4, 5).forEach{ if(it == 3) return@forEach}
- 라벨 없이 return을 수행하고 싶을 경우 inline function을 구성해서 사용해야 함
listOf(1, 2, 3, 4, 5).forEach(fun(value:Int){ if(value == 3) return print(value) })
Reference
- Kotlin docs