# 클로저
package chap02.section1
/* 클로저
* 람다식으로 표현된 내부 함수에서 외부 범위에 선언된 변수에 접근할 수 있는 개념
* 이때 람다식 안에 있는 외부 변수는 값을 유지하기 위해 람다식이 포획(capture)한 변수라고 부른다
* - final 변수를 포획한 경우 변수 값을 람다식과 함께 저장한다.
* - final이 아닌 변수를 포획한 경우 변수를 특정 래퍼(wrapper)로 감싸서 나중에 변경하거나 읽을 수 있게 한다.
* 이때 래퍼에 대한 참조를 람다식과 함께 저장한다.
* */
// 클로저 테스트하기
fun main() {
val calc = Calc()
var result = 0 // 외부의 변수
calc.addNum(2,3) {x,y -> result = x + y} // 클로저
println(result)
}
class Calc{
fun addNum(a: Int, b: Int, add : (Int,Int) -> Unit) {
add(a,b)
}
}
'Kotlin' 카테고리의 다른 글
Kotlin - DSL(Domain-Specific Language) (0) | 2022.06.22 |
---|---|
Kotlin - 람다식을 사용하는 표준 라이브러리★ (0) | 2022.06.21 |
Kotlin - 람다식과 고차함수(review) ★ (0) | 2022.06.21 |
Kotlin - 시퀀스의 활용 (0) | 2022.06.21 |
Kotlin - 컬렉션의 확장 함수 (0) | 2022.06.21 |