Kotlin/포스팅

코틀린 고차 함수

짜집퍼박사(짜박) 2023. 12. 17. 00:08

코틀린에서 고차 함수(higher-order function)는 다른 함수를 매개변수로 받거나 함수를 반환하는 함수를 말합니다. 고차 함수를 사용하면 코드를 더 유연하게 만들 수 있고, 함수형 프로그래밍의 특징을 활용할 수 있습니다. 아래에서 고차 함수의 여러 측면에 대해 자세히 알아보겠습니다.

 

1. 함수를 매개변수로 받는 고차 함수

fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}

- operation 매개변수가 (Int, Int) -> Int 형식의 함수를 받습니다.
- operate 함수 내에서 operation(a, b)를 호출하여 매개변수로 받은 함수를 실행합니다.

 

2. 람다식을 이용한 호출

val sumResult = operate(5, 3) { a, b -> a + b }
val multiplyResult = operate(5, 3) { a, b -> a * b }

함수를 직접 정의하는 대신 람다식을 사용하여 고차 함수를 호출할 수 있습니다.

 

3. 함수를 반환하는 고차 함수

fun getOperation(operator: String): (Int, Int) -> Int {
    return when (operator) {
        "+" -> { a, b -> a + b }
        "*" -> { a, b -> a * b }
        else -> { _, _ -> 0 }
    }
}

- getOperation 함수가 (Int, Int) -> Int 형식의 함수를 반환합니다.
- 반환되는 함수는 operator에 따라 다르게 동작합니다.

 

4. 고차 함수 예시

fun <T> List<T>.customFilter(predicate: (T) -> Boolean): List<T> {
    val result = mutableListOf<T>()
    for (item in this) {
        if (predicate(item)) {
            result.add(item)
        }
    }
    return result
}

- 리스트를 필터링하는 고차 함수의 예시입니다.
- predicate 매개변수로 전달된 함수에 따라 필터링이 이루어집니다.

 

5. 인라인 고차 함수

inline fun executeInTransaction(database: SQLiteDatabase, action: () -> Unit) {
    try {
        database.beginTransaction()
        action()
        database.setTransactionSuccessful()
    } finally {
        database.endTransaction()
    }
}

inline 키워드를 사용하여 함수 호출을 최적화하는 인라인 고차 함수의 예시입니다.

 

6. crossinline 키워드

inline fun executeInTransaction(crossinline action: () -> Unit) {
    // ...
}

crossinline 키워드를 사용하여 람다식 안에서 비지역 반환을 금지하는 인라인 함수의 예시입니다.

 

고차 함수는 함수형 프로그래밍의 핵심 개념 중 하나이며, 코틀린은 함수형 프로그래밍을 지원하기 위한 다양한 기능을 제공합니다. 고차 함수를 활용하면 코드의 재사용성과 가독성을 높일 수 있습니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 로컬 함수  (0) 2023.12.17
코틀린 익명 함수  (0) 2023.12.17
코틀린 단일 표현식 함수  (0) 2023.12.16
기본적인 함수의 특징  (0) 2023.12.13
코틀린 함수  (0) 2023.12.10