[kotlin] 코틀린에서의 함수 합성과 파이프라인
함수형 프로그래밍은 함수 합성과 파이프라인과 같은 개념을 중심으로 이루어집니다. 코틀린에서도 함수 합성과 파이프라인을 사용하여 코드를 조직하고 간결하게 작성할 수 있습니다.
함수 합성
함수 합성은 다른 함수들을 조합해서 새로운 함수를 만드는 것을 의미합니다. 코틀린에서는 andThen
함수를 사용하여 함수 합성을 할 수 있습니다.
아래는 andThen
함수를 사용하여 두 개의 함수를 합성하는 예제입니다.
val add2: (Int) -> Int = { it + 2 }
val multiplyBy3: (Int) -> Int = { it * 3 }
val add2AndMultiplyBy3 = add2.andThen(multiplyBy3)
println(add2AndMultiplyBy3(5)) // 21
위 예제에서 add2
함수와 multiplyBy3
함수를 andThen
함수를 사용하여 합성하여 add2AndMultiplyBy3
함수를 만들었습니다.
파이프라인
파이프라인은 데이터 처리를 순차적으로 연결된 함수 호출로 정의하는 것을 의미합니다. 코틀린에서는 invoke
연산자를 사용하여 파이프라인을 구현할 수 있습니다.
아래는 파이프라인을 사용하여 데이터를 처리하는 예제입니다.
data class Person(val name: String, val age: Int, val city: String)
val people = listOf(
Person("Alice", 25, "New York"),
Person("Bob", 30, "San Francisco"),
Person("Charlie", 35, "Seattle")
)
fun filterByAgeLessThan(age: Int) = { person: Person -> person.age < age }
fun mapToName(person: Person) = person.name
val result = people
.filter(filterByAgeLessThan(30))
.map(::mapToName)
println(result) // [Alice, Bob]
위 예제에서 filterByAgeLessThan
함수와 mapToName
함수를 사용하여 파이프라인을 만들어 people
리스트를 처리하였습니다.
함수 합성과 파이프라인은 코드를 더 모듈화하고 가독성을 향상시키는데 도움이 됩니다. 코틀린에서 이러한 함수형 프로그래밍의 개념을 활용하여 코드를 작성하면 유연하고 간결한 코드를 작성할 수 있습니다.