Kotlin

Kotlin - 클로저★

J_Bin 2022. 6. 21. 16:40

# 클로저

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)
    }
}