※ 클로저(Closure)
- 람다식으로 표현된 내부 함수에서 외부 범위에 선언된 변수에 접근할 수 있는 개념
- 람다식 안에 있는 외부 변수는 값을 유지하기 위해 람다가 포획(capture)한 변수
기본적으로 함수 안에 정의된 변수는 로컬 변수로 스택에 저장되어 있다 함수가 끝나면 같이 사라지게 되지만
클로저 개념에서 포획한 변수는 참조가 유지되어 종료되어도 사라지지 않고 접근하거나 수정할 수 있다.
fun main() {
val calc = Calc()
var result = 0 // 외부의 변수
calc.addNum(2,3) { x, y -> result = x + y } // 클로저
println(result) // 값을 유지해 5 출력
}
class Calc {
fun addNum(a: Int, b: Int, add: (Int, Int) -> Unit) { // 람다식 add에는 반환값이 없음
add(a, b)
}
}
함수 매개변수에 접근
- 함수 자체를 같이 포획하여 해당 매개변수에 접근함
'기타 > What I Learned' 카테고리의 다른 글
[TIL] Kotlin - also() (0) | 2022.02.19 |
---|---|
[TIL] Kotlin - 결과와 함께 반환하기, let() (0) | 2022.02.18 |
[TIL] Kotlin - 람다식과 고차함수 요약 (0) | 2022.02.16 |
[TIL] Kotlin - 예외 발생 (0) | 2022.02.15 |
[TIL] Kotlin - 흐름의 중단과 반환 (2) (0) | 2022.02.14 |