코틀린에서 익명 함수(anonymous function)는 이름이 없는 함수로서, 주로 함수형 프로그래밍에서 사용됩니다. 익명 함수는 일반 함수와 유사하지만, 함수의 이름이 없고 직접 호출될 수 있는 형태로 작성됩니다.
익명 함수의 기본 구조
val sum: (Int, Int) -> Int = fun(x: Int, y: Int): Int {
return x + y
}
// 또는
val sum2 = fun(x: Int, y: Int): Int {
return x + y
}
익명 함수를 인자로 받는 함수
fun operateOnNumbers(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
fun main() {
val sumFunction: (Int, Int) -> Int = fun(x, y) = x + y
val result = operateOnNumbers(5, 3, sumFunction)
println(result) // 출력: 8
}
익명 함수의 다양한 사용 예제
// 컬렉션의 각 요소에 대해 익명 함수 적용
val numbers = listOf(1, 2, 3, 4, 5)
val squaredNumbers = numbers.map(fun(x) = x * x)
println(squaredNumbers) // 출력: [1, 4, 9, 16, 25]
// 필터링을 위한 익명 함수
val evenNumbers = numbers.filter(fun(x) = x % 2 == 0)
println(evenNumbers) // 출력: [2, 4]
// reduce를 이용한 익명 함수
val product = numbers.reduce(fun(acc, next) = acc * next)
println(product) // 출력: 120
익명 함수는 특정한 이름 없이 함수를 정의하고 사용할 수 있도록 하는 기능을 제공합니다. 하지만 주로 람다 함수가 더 간결하고 선호되므로, 대부분의 경우에는 람다 함수를 사용하는 것이 일반적입니다. 람다 함수와 익명 함수는 서로 유사하지만, 람다 함수가 훨씬 간결하게 작성할 수 있어서 람다 함수를 주로 사용하는 경향이 있습니다.
With ChatGPT
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린 인라인 함수와 프로퍼티 (0) | 2023.12.31 |
---|---|
코틀린 호출 가능 참조 (0) | 2023.12.31 |
코틀린 람다 함수 (0) | 2023.12.31 |
코틀린 함수 타입 (0) | 2023.12.30 |
코틀린 고차 함수 (0) | 2023.12.30 |