KOTLIN · 함수
함수 합성 (Function Composition)
두 함수를 조합하여 새 함수를 만듭니다. compose와 andThen 패턴으로 데이터 변환 파이프라인을 구성합니다.
함수고급compositioncomposeandThenpipeline
핵심 설명
두 함수를 조합하여 새 함수를 만듭니다. compose와 andThen 패턴으로 데이터 변환 파이프라인을 구성합니다.
Kotlin code
// 함수 합성 연산자
infix fun <A, B, C> ((B) -> C).compose(g: (A) -> B): (A) -> C =
{ a -> this(g(a)) }
infix fun <A, B, C> ((A) -> B).andThen(g: (B) -> C): (A) -> C =
{ a -> g(this(a)) }
val trim: (String) -> String = String::trim
val lowercase: (String) -> String = String::lowercase
val addGreeting: (String) -> String = { "안녕하세요, $it!" }
fun main() {
// compose: 오른쪽부터 실행
val greetClean = addGreeting compose lowercase compose trim
println(greetClean(" KOTLIN "))
// "안녕하세요, kotlin!"
// andThen: 왼쪽부터 실행
val pipeline = trim andThen lowercase andThen addGreeting
println(pipeline(" WORLD "))
// "안녕하세요, world!"
// 리스트 변환 파이프라인
val process = { s: String -> s.split(",") } andThen
{ list: List<String> -> list.map { it.trim().toInt() } } andThen
{ nums: List<Int> -> nums.filter { it > 0 }.sum() }
println(process("1, -2, 3, 4, -5")) // 8
}학습 팁
andThen은 실행 순서가 읽는 순서와 같아 파이프라인 구성 시 더 직관적입니다.
주의할 점
합성 함수의 타입이 일치하지 않으면 컴파일 오류가 발생합니다. f: (B) -> C와 g: (A) -> B에서 B 타입이 일치해야 합니다.
자주 묻는 질문
함수 합성 (Function Composition)란 무엇인가요?
두 함수를 조합하여 새 함수를 만듭니다. compose 와 andThen 패턴으로 데이터 변환 파이프라인을 구성합니다.
함수 합성 (Function Composition) 학습 시 주의할 점은 무엇인가요?
합성 함수의 타입이 일치하지 않으면 컴파일 오류가 발생합니다. f: (B) -> C 와 g: (A) -> B 에서 B 타입이 일치해야 합니다.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.