Kotlin/포스팅

코틀린 고차 함수

짜집퍼박사(짜박) 2023. 12. 30. 23:07

코틀린에서 "고차 함수"는 함수를 인자로 받거나, 함수를 반환하거나, 함수를 변수에 대입할 수 있는 함수를 가리킵니다. 이는 함수형 프로그래밍의 핵심 개념 중 하나입니다. 고차 함수를 사용하면 코드를 더 간결하게 작성하고, 추상화 수준을 높일 수 있습니다.

 

1. 함수를 인자로 받는 고차 함수

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

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5)

    // customFilter 함수에 람다식을 인자로 전달
    val evenNumbers = numbers.customFilter { it % 2 == 0 }

    println(evenNumbers)  // 출력: [2, 4]
}

 

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

fun multiplyBy(factor: Int): (Int) -> Int {
    return { number -> number * factor }
}

fun main() {
    val multiplyByTwo = multiplyBy(2)
    println(multiplyByTwo(3))  // 출력: 6
}

 

3. 함수를 변수에 대입하는 고차 함수

val add: (Int, Int) -> Int = { a, b -> a + b }

fun main() {
    println(add(2, 3))  // 출력: 5
}

 

4. 고차 함수를 인자로 받는 함수

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

fun main() {
    val result = operateOnNumbers(10, 5) { x, y -> x + y }
    println(result)  // 출력: 15
}

 

5. 함수 타입과 Nullable 함수 타입

fun handleNullableFunction(fn: ((Int) -> Int)?) {
    if (fn != null) {
        val result = fn(10)
        println(result)
    } else {
        println("Function is null")
    }
}

fun main() {
    val addTen: (Int) -> Int = { it + 10 }
    handleNullableFunction(addTen)  // 출력: 20

    val nullFunction: ((Int) -> Int)? = null
    handleNullableFunction(nullFunction)  // 출력: Function is null
}

고차 함수는 코틀린에서 함수형 프로그래밍을 지원하는 강력한 기능 중 하나입니다. 이를 통해 코드의 재사용성과 추상화 수준을 높일 수 있습니다. 함수형 프로그래밍은 불변성, 일급 함수, 고차 함수 등의 개념을 기반으로 하며, 이는 코틀린에서 효과적으로 지원됩니다.

 

With ChatGPT

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

코틀린 람다 함수  (0) 2023.12.31
코틀린 함수 타입  (0) 2023.12.30
코틀린 객체 식  (0) 2023.12.30
코틀린 동반 객체  (0) 2023.12.30
코틀린 객체 선언  (0) 2023.12.30