반응형
오늘은 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
'Android 개발 > Android' 카테고리의 다른 글
Vibrator 로 구현하는 안드로이드 진동 (0) | 2023.05.23 |
---|---|
SharedPreference 로 간단한 데이터 저장하기 # Android (2) | 2023.04.27 |
getLaunchIntentForPackage 로 다른 앱을 실행 하는 방법 # query Android 11 (0) | 2023.04.20 |
RemoteConfig 이용해서 다이나믹하게 앱 업데이트 하기 # Android (1) | 2023.03.23 |
Target Api 31 ( Android12 ) 에서 적용해야 하는 사항들 # Location Intent Filters exported mutability (0) | 2022.12.01 |
Contentprovider 와 ContentResolver 이용한 CRUD # Mime-type Uri (1) | 2022.11.18 |
Android 리소스 정리시 사용하는 Naming Convention (0) | 2022.11.12 |
Android 에서 동적 권한 얻기 # State registerForActivityResult Runtime Permission (0) | 2022.10.24 |
카카오톡이나 페이스북에서 사용하는 HashKey 얻어오기 #Android (0) | 2021.05.07 |
registerForActivityResult 구현방법 정리 # 예전 onActivityResult (0) | 2021.04.01 |
댓글