일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 기업가정신
- MVVM
- 멀티쓰레드
- View
- AsyncTask
- ViewModel
- 인스턴스
- 비동기
- 부의추월차선
- 람다
- mutable
- 부자의그릇
- 동기
- 가치생산주의
- 안드로이드
- Kotlin
- 언스크립티드
- JNI
- NDK
- 코루틴
- 코틀린
- 책리뷰
- 타이탄의도구
- java
- 부자아빠가난한아빠
- 자청
- Coroutines
- SharedPreferences
- Android
- ViewGroup
Archives
- Today
- Total
타이탄의 도구들
[Kotlin] 람다표현식1 (일급함수, 콜백함수, 고차함수) 본문
728x90

함수를 다른 변수와 동일하게 다루는 언어는 일급 함수를 가졌다고 표현합니다.
예를 들어, 일급 함수를 가진 언어에서는
함수를 변수에 할당하거나,
함수를 다른 함수에 인자로 제공할 수 있으며,
함수가 함수를 반환할 수 있습니다.
1. 일급함수는 변수에 할당할 수 있습니다.
아래 코드에서 변수 helloTitans에
"Hello Titans"를 리턴하는 함수를 할당할 수 있습니다.
val helloTitans : () -> String = {"Hello Titans"}
2. 일급함수는 다른 함수에 인자로 제공할 수 있어야 합니다
val helloTitans: () -> String = {"Hello Titans"}
fun printHelloTitans( paramFuntion : () -> String) {
print("${paramFuntion()}")
}
fun main(args: Array<String>) {
//함수인 helloTitans를 인자로 가짐
//또한 helloTitans 처럼 다른 함수에 인자로 전달된 함수를 '콜백함수'라고 합니다.
printHelloTitans(helloTitans)
}
실행 결과
Hello Titans
3. 일급함수는 함수가 함수를 반환할 수 있습니다.
val helloTitans: () -> String = {"Hello Titans"}
fun returnHelloTitans(): () -> String {
//함수인 helloTitans를 리턴(반환)값으로 가짐
// 또한 returnHelloTitans()와 같이 함수를 반환하는 함수를 '고차함수' 라고합니다.
return helloTitans
}
//cf) 고차함수는 함수를 인자로 받아 함수로 리턴할 수도 있습니다.
fun higherOrderFunctions(paramFunction : ()-> String ) : () -> String {
return paramFunction
}
fun main(args: Array<String>) {
val returned1: ()->String = returnHelloTitans()
val returned2: ()->String = higherOrderFunctions(helloTitans)
print("${returned1()}")
print("${returned2()}")
}
실행 결과
Hello Titans
cf) 일급 객체란?
아래 3가지 조건을 충족하는 객체
1. 변수에 할당 할 수 있어야 한다.
2. 인자로 넘길 수 있어야 한다.
3. 리턴값으로 리턴 할수 있어야 한다.
728x90
'Dev Tools > Kotlin' 카테고리의 다른 글
[Kotlin] 람다표현식2 (Lambda expression) (0) | 2022.07.29 |
---|---|
[Kotlin] Collection, Mutable, Immutable (0) | 2022.06.09 |
[Kotlin] Collection, Mutable, Immutable (0) | 2022.05.31 |