본문 바로가기
개발&프로그래밍

[kotlin] 고차 함수와 람다 (Higher-order Functions and Lambdas)

by 재아군 2024. 8. 18.

 

kotlin의 고차 함수와 람다 (Higher-order Functions and Lambdas)

코틀린(Kotlin)은 함수형 프로그래밍의 강력한 기능을 제공합니다. 이 글에서는 고차 함수와 람다 표현식에 대해 자세히 알아보겠습니다. 이러한 개념들은 코드를 더 간결하고 표현력 있게 만들어 줍니다.

 

kotlin의 고차 함수와 람다 (Higher-order Functions and Lambdas)

 

 

고차 함수 (Higher-order Functions)

고차 함수는 다른 함수를 매개변수로 받거나 함수를 반환하는 함수를 말합니다. 코틀린에서는 함수가 일급 객체이므로 변수에 저장하거나 다른 함수에 전달할 수 있습니다.

예를 들어, 컬렉션의 fold 함수는 고차 함수의 좋은 예시입니다:

fun <T, R> Collection<T>.fold(
    initial: R,
    combine: (acc: R, nextElement: T) -> R
): R {
    var accumulator: R = initial
    for (element: T in this) {
        accumulator = combine(accumulator, element)
    }
    return accumulator
}

이 함수는 초기값과 결합 함수를 받아 컬렉션의 모든 요소를 순회하며 결과를 누적합니다.

 

 

함수 타입 (Function Types)

코틀린은 함수 타입을 사용하여 함수를 다루는 선언을 합니다. 예를 들어, (Int) -> String은 정수를 받아 문자열을 반환하는 함수 타입입니다.

함수 타입은 다음과 같은 형태를 가집니다:

  • (A, B) -> C: A와 B 타입의 매개변수를 받아 C 타입을 반환하는 함수
  • () -> A: 매개변수 없이 A 타입을 반환하는 함수
  • suspend () -> Unit: 코루틴에서 사용되는 일시 중단 함수

 

 

람다 표현식 (Lambda Expressions)

람다 표현식은 함수 리터럴의 가장 일반적인 형태입니다. 간단한 형태의 람다 표현식은 다음과 같습니다:

val sum = { x: Int, y: Int -> x + y }

람다 표현식은 중괄호로 둘러싸여 있으며, 매개변수 선언은 -> 기호 앞에 위치합니다.

 

후행 람다 (Trailing Lambdas)

함수의 마지막 매개변수가 함수인 경우, 람다 표현식을 괄호 밖에 작성할 수 있습니다:

val product = items.fold(1) { acc, e -> acc * e }

이러한 문법은 코드의 가독성을 높여줍니다.

 

 

익명 함수 (Anonymous Functions)

람다 표현식과 유사하지만 반환 타입을 명시적으로 지정할 수 있는 익명 함수도 있습니다:

val sum = fun(x: Int, y: Int): Int = x + y

익명 함수는 일반 함수와 비슷하지만 이름이 없습니다.

 

 

고차 함수와 람다 표현식은 코틀린의 강력한 기능 중 하나입니다. 이를 활용하면 더 간결하고 표현력 있는 코드를 작성할 수 있으며, 함수형 프로그래밍의 이점을 충분히 활용할 수 있습니다. 이러한 개념들을 잘 이해하고 적절히 사용한다면, 더 효율적이고 유지보수가 쉬운 코드를 작성할 수 있을 것입니다.

 

 

 

Kotlin, 고차함수, 람다, 함수형프로그래밍, 익명함수, 함수타입, 후행람다, 코틀린문법, 프로그래밍, 개발

댓글