Android 개발/Android
함수안에 함수 넣기 # Closure Local functions Kotlin
Developer88
2023. 4. 15. 00:00
반응형
오늘은 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