반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- kotlin2.0
- php개발
- 서버
- 플러터
- 조건문
- android
- kotlininaction
- jquery
- SwiftUI
- ios
- php
- 스나이퍼팩토리
- java
- 정보처리기사
- Kotlin
- 설치
- node
- php변수
- Flutter
- 코틀린
- express
- 변수
- Coroutine
- script
- node.js
- 이클립스
- 그림으로 배우는 서버구조
- 스터디
- Eclipse
- Flow
Archives
- Today
- Total
mygomii
[Kotlin] 10.3 람다에서 반환: 고차 함수에서 흐름 제어 본문
반응형
10.3.1 람다 안의 retrun 문: 람다를 둘러싼 함수에서 반환
inline fun perform(times: Int, action: (Int) -> Unit) {
for (i in 1..times) {
action(i)
}
println("perform 끝") // 이 코드는, 람다에서 비지역 반환이 일어나면 실행되지않음
}
fun foo() {
perform(5) { i ->
if (i == 3) return // non-local return: foo()를 즉시 종료
println("i = $i")
}
println("foo 끝") // 이 줄은 호출되지 x
}
fun main() {
foo()
println("main 계속 실행") // foo()가 return으로 바로 나가버렸기 때문에, 여전히 실행
}
10.3.2 람다로부터 반환: 레이블을 사용한 return
- inline 고차 함수에 넘긴 람다에서 return을 하면 기본적으로 비지역 반환(non-local return) 으로 동작해, 람다를 감싼 함수 전체가 종료됨
- 그런데 “람다 내부만 종료시키고 싶을 때” 는 레이블(label) 을 붙인 return 을 사용함
inline fun perform(times: Int, action: (Int) -> Unit) {
for (i in 1..times) {
action(i)
}
println("perform 끝")
}
fun exampleLabelReturn() {
perform(5) lambda@{ i ->
if (i == 3) return@lambda // 이 return은 람다(lambda@)만 종료
println("i = $i")
}
println("exampleLabelReturn 끝") // 이 줄도 실행됨
}
fun main() {
exampleLabelReturn()
}
10.3.3 익명 함수: 기본적으로 로컬 return
- inline 함수에 넘겨줄 때 람다 대신 익명 함수(anonymous function)를 사용하면, 그 안의 return은 언제나 로컬 반환(local return) 으로 동작
- 익명 함수 내부에서 return이 호출되면 익명 함수 자체만 빠져나가고, 이를 감싼 호출 함수나 상위 함수 전체는 종료되지 않음
inline fun perform(times: Int, action: (Int) -> Unit) {
for (i in 1..times) {
action(i)
}
println("perform 끝")
}
fun exampleAnonymousFunction() {
perform(5, fun(i: Int) {
if (i == 3) {
println("i == 3: 익명 함수에서 return")
return // 로컬 반환: 익명 함수만 종료
}
println("i = $i")
})
println("exampleAnonymousFunction 끝") // 이 줄도 정상 실행
}
fun main() {
exampleAnonymousFunction()
}
/*
i = 1
i = 2
i == 3: 익명 함수에서 return
i = 4
i = 5
perform 끝
exampleAnonymousFunction 끝
*/
반응형
'Kotlin' 카테고리의 다른 글
[Kotlin] 11.2 실행 시점 제네릭스 동작: 소거된 타입 파라미터와 실체화된 타입 파라미터 (0) | 2025.05.23 |
---|---|
[Kotlin] 11.1 타입 인자를 받는 타입 만들기: 제네릭 타입 파라미터 (0) | 2025.05.22 |
[Kotlin] 10.2 인라인 함수를 사용해 람다의 부가 비용 없애기 (0) | 2025.05.20 |
[Kotlin] 10.1 다른 함수를 인자로 받거나 반환하는 함수 정의: 고차 함수 (1) | 2025.05.19 |
[Kotlin] 9.5 프로퍼티 접근자 로직 재활용: 위임 프로퍼티 (0) | 2025.05.17 |