[kotlin] 코틀린에서 람다식과 고차 함수를 사용하여 함수 합성(composition)을 구현하는 방법
함수 합성은 두 개 이상의 함수를 조합하여 새로운 함수를 만드는 방법을 말합니다. 코틀린에서는 람다식과 고차 함수를 사용하여 이러한 함수 합성을 구현할 수 있습니다.
람다식과 고차 함수
코틀린에서 람다식은 중괄호 {}
로 둘러싸인 익명 함수로, 변수에 저장하거나 함수의 매개변수로 전달할 수 있습니다. 고차 함수는 함수를 매개변수로 받거나 함수를 반환하는 함수입니다. 이러한 개념을 활용하여 함수 합성을 구현할 수 있습니다.
함수 합성 구현하기
다음은 두 개의 함수를 합성하여 새로운 함수를 만드는 예제 코드입니다.
// 고차 함수를 사용하여 함수 합성하기
fun <T, U, V> compose(f: (U) -> V, g: (T) -> U): (T) -> V {
return { x -> f(g(x)) }
}
// 합성할 함수들 정의
val add2: (Int) -> Int = { it + 2 }
val multiplyBy3: (Int) -> Int = { it * 3 }
// 함수 합성 적용
val add2AndMultiplyBy3 = compose(::multiplyBy3, ::add2)
// 결과 출력
println(add2AndMultiplyBy3(5)) // 출력: 21 (5에 2를 더하고 3을 곱한 결과)
위 코드에서 compose
함수는 두 개의 함수 f
와 g
를 받아 합성된 함수를 반환합니다. 그리고 add2AndMultiplyBy3
는 add2
와 multiplyBy3
함수를 합성하여 새로운 함수를 생성합니다.
이와 같이 코틀린에서는 람다식과 고차 함수를 이용하여 함수 합성을 쉽게 구현할 수 있습니다.
함수 합성에 대한 더 자세한 내용은 여기에서 확인할 수 있습니다.