KOTLIN · 함수형
람다 & 고차함수
함수를 일급 객체로 다루는 Kotlin의 함수형 프로그래밍 핵심.
함수형중급lambda람다고차함수HOFfunction-type
핵심 설명
함수를 일급 객체로 다루는 Kotlin의 함수형 프로그래밍 핵심.
Kotlin code
// 함수 타입
val double: (Int) -> Int = { n -> n * 2 }
val greet: (String) -> String = { "Hello, $it!" } // it: 단일 파라미터
val add: (Int, Int) -> Int = { a, b -> a + b }
// 고차함수 — 함수를 파라미터로 받기
fun transform(list: List<Int>, fn: (Int) -> Int) =
list.map(fn)
// 고차함수 — 함수를 반환하기
fun multiplier(factor: Int): (Int) -> Int = { it * factor }
// 함수 합성
infix fun <A, B, C> ((A) -> B).then(g: (B) -> C): (A) -> C =
{ g(this(it)) }
// 메서드 참조
fun isPositive(n: Int) = n > 0
val nums = listOf(-3, -1, 0, 2, 5)
val pos = nums.filter(::isPositive)
val strs = nums.map(Int::toString)
fun main() {
println(transform(listOf(1,2,3), double)) // [2, 4, 6]
println(transform(listOf(1,2,3)) { it * it }) // trailing lambda
val triple = multiplier(3)
println(triple(7)) // 21
val process = double then { it + 1 } then { "$it!" }
println(process(5)) // "11!"
}학습 팁
마지막 인자가 람다이면 괄호 밖으로 꺼낼 수 있습니다(trailing lambda). 인자가 람다 하나뿐이면 괄호를 생략할 수 있습니다.
주의할 점
람다 내에서 return은 람다를 포함하는 함수 전체에서 반환합니다(non-local return). 람다만 종료하려면 return@label을 사용하세요.
자주 묻는 질문
람다 & 고차함수란 무엇인가요?
함수를 일급 객체로 다루는 Kotlin의 함수형 프로그래밍 핵심.
람다 & 고차함수 학습 시 주의할 점은 무엇인가요?
람다 내에서 return 은 람다를 포함하는 함수 전체에서 반환합니다(non-local return). 람다만 종료하려면 return@label 을 사용하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.