본문 바로가기
학습 log (이론)/kotlin

Kotlin기초 'Closure'

by abbear25 2019. 11. 12.

Closure

상위 함수 영역의 변수에 접근할 수 있는 함수

close over, 특정 변수를 애워싸 가지고 있음을 의미

특정 로직에서 공식이 변경되는 경우, 공식의 이력을 함수로 관리하는 경우

 

class MainActivity : AppCompatActivity() {
    val TAG: String = "TEST"
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        var fn = funClosure(1)
        Log.e(TAG, fn(1).toString()) //2출력
        Log.e(TAG, fn(1).toString()) //3출력

        fun minus(num:Int)=num-1
        var x = importantClosure(::minus)
        Log.e(TAG, x().toString()) //-1출력
        Log.e(TAG, x().toString()) //-2출력
    }
    /*int 타입 함수를 리턴하는 함수*/
    fun funClosure(num:Int): (Int)-> Int{
        var sum: Int = num //전역 메모리와 같이 특정 공간에 보관되어있는 변수
        return fun(num2: Int): Int{
            sum = sum+num2
            return sum
        }
    }
    fun importantClosure(inFun: (Int)->Int):()->Int{
        var result: Int = 0
        return{
            result = inFun(result)
            result
        }
    }
}
반응형

'학습 log (이론) > kotlin' 카테고리의 다른 글

'Coroutine' 기본  (0) 2019.12.15
Kotlin기초 'lambda'  (0) 2019.12.07
Kotlin기초 '유용한 함수'  (0) 2019.11.10
Kotlin기초 '함수형 프로그래밍'  (0) 2019.11.06
Kotlin기초 '객체'  (0) 2019.11.03