본문 바로가기
Android 개발/Android

함수안에 함수 넣기 # Closure Local functions Kotlin

by Developer88 2023. 4. 15.
반응형

오늘은 Kotlin에서 함수안에 함수를 넣는 것에 대해서 정리해 보도록 하겠습니다.

 

 

1. 함수안에 함수

코틀린에서는 local function 즉, 함수안에 다른 함수를 넣는 것이 가능합니다.

 

fun main() {
    fun hello(name: String) {
        println("Hello, $name!")
    }

    hello("김군")
    hello("홍군")
}

 

 

2. Clousure

함수안에 함수를 사용할 때는 Closure라는 개념이 들어갑니다.

쉽게 말해서, 함수 바깥의 범위에 들어가 있는 변수의 값에 접근하는 것이 가능하다는 것 입니다.

아래의 calculateDiscount 함수는 바깥에 있는 price와 discountPercentage에 접근이 가능한 것도 이것 때문입니다.

원래는 global한 범위로 선언되지 않은 다른 함수의 범위에 접근할 수는 없지요.

 

fun calculateFinalPrice(price: Double, discountPercentage: Double): Double {
    fun calculateDiscount(): Double {
        return price * (discountPercentage / 100)
    }
    val discount = calculateDiscount()
    return price - discount
}

 

 

3. exception handler 사용예

이렇게 함수안에 함수를 사용하면 다양한 활용이 가능해지는데요.

아래와 같이 함수안에 exception handler 를 사용하는 것도 가능해 집니다.

여기서는 Exception을 핸들할 때 특별한 것이 없지만,

이 함수의 Exception 처리할 때 해야하는 특정한 과업들이 있을 때는,

맥락을 벗어나지 않으면서 함수를 처리할 수 있어서 좋습니다.

 

fun processData(data: String) {
    fun handleException(e: Exception, message: String) {
        e.printStackTrace()
    }

    try {
        val processedData = data.toInt() * 2
    } catch (e: NumberFormatException) {
        handleException(e, "Input data is not a valid number")
    } catch (e: Exception) {
        handleException(e, "An unexpected error occurred")
    }
}

 

이상으로 Kotlin의 Local Function 에 대해서 정리해 보았습니다.

 

728x90

댓글