kotlin의 고차 함수와 람다 (Higher-order Functions and Lambdas)
코틀린(Kotlin)은 함수형 프로그래밍의 강력한 기능을 제공합니다. 이 글에서는 고차 함수와 람다 표현식에 대해 자세히 알아보겠습니다. 이러한 개념들은 코드를 더 간결하고 표현력 있게 만들어 줍니다.
고차 함수 (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, 고차함수, 람다, 함수형프로그래밍, 익명함수, 함수타입, 후행람다, 코틀린문법, 프로그래밍, 개발
'개발&프로그래밍' 카테고리의 다른 글
[인텔리제이] 코드 가독성을 높여주는 Rainbow Brackets 플러그인 (0) | 2024.08.23 |
---|---|
[kotlin] 인라인 함수 (Inline Functions) (0) | 2024.08.19 |
[Kotlin] 함수 (0) | 2024.08.18 |
[Kotlin] 타입 별칭(Type Aliases) (0) | 2024.08.18 |
[Kotlin] 위임된 프로퍼티(Delegated Properties) (0) | 2024.08.17 |
댓글