일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Java
- Android Jetpack
- MVP Architecture
- DataBinding
- Android Interceptor
- 영어공부
- Kotlin
- 안드로이드 카카오 로그인
- OkHttp Interceptor
- Android WebView
- Kotlin FCM
- 안드로이드 갤러리 접근
- 알고리즘 자바
- Android ViewPager2
- scope function
- WebView
- 카카오 알고리즘
- 66챌린지
- 안드로이드 fcm
- android recyclerview
- Android 12 대응
- Android
- 프로그래머스 알고리즘
- 습관만들기
- Android DataBinding
- 영어독립365
- Android ProgressBar
- 안드로이드
- Android 12
- Android Navigation
Archives
- Today
- Total
Developer Geek
Higher-Order Function(고차함수)란 in Kotlin 본문
반응형
Higher-Order Functions 란
Higher-Order Functions(고차함수)란 함수의 인자로 다른 함수를 받거나 또는 함수 자체를 반환하는 함수이다.
함수 인자로 함수를 받는 고차함수
fun calculate(x: Int, y: Int, operation: (Int, Int) -> Int): Int { // 1
return operation(x, y) // 2
}
fun sum(x: Int, y: Int) = x + y // 3
fun main() {
val sumResult = calculate(4, 5, ::sum) // 4
val mulResult = calculate(4, 5) { a, b -> a * b } // 5
println("sumResult $sumResult, mulResult $mulResult")
}
- 고차함수를 정의하는 부분이다. 여기서는 정수형 인자 x, y를 받는다. 추가적으로 하나의 함수
operation
을 받는데, 이 함수는 또calculate
함수의 리턴에도 사용된다. - 고차함수는
operation
함수의 결과값을 반환한다. operation
에 대입될 함수(sum
)를 정의한다.- 고차함수(
calculate
)에 정수형 인자로 2개의 정수와 함수 인자로::sum
을 담아 호출한다. (::
는 이름으로 함수를 참조하는 코틀린 표기법이다.) - 고차함수(
calculate
)를 호출하는데 이번에는 함수형 인자에 정의된 함수를 담는 것이 아니라람다 표현식
을 이용해서 함수를 담는다.(람다식
을 사용하는게 훨씬 깔끔해보이지 않나??)
함수를 반환하는 고차함수
fun operation(): (Int) -> Int { // 1
return ::square
}
fun square(x: Int) = x * x // 2
fun main() {
val func = operation() // 3
println(func(2)) // 4
}
- 함수를 반환하는 고차함수를 정의한다.
(Int) -> Int
는 인자와 반환형을 나타낸다. 위 코드에서는square
함수의 인자와 반환형을 나타낸다. operation
고차함수에서 반환하는square
함수를 정의한다.func
변수에operation
고차함수의 반환값을 저장한다. 여기서는func
변수는operation
의 반환값인square
함수를 저장한다.func
함수를 호출한다. 정확히는square(2)
가 호출되어 출력된다.
참고 문서
질문과 잘못된 점에 대해 말씀해주시는 건 언제나 환영입니다.
zero5.two4@gmail.com
반응형
'안드로이드' 카테고리의 다른 글
Android Unit Test란 (0) | 2022.06.21 |
---|---|
Android Application Class란 in Kotlin (0) | 2022.06.17 |
EditText 키보드 엔터 키보드 내리기 In Kotlin (0) | 2022.03.18 |
Android Action Bar 숨기기 in Kotlin (0) | 2022.03.03 |
Android BottomSheetDialogFragment in Kotlin (0) | 2022.03.02 |
Comments