코틀린에서 익명 함수(Anonymous Function)는 이름이 없는 함수로, 주로 고차 함수의 매개변수로 전달되는 경우나 람다식을 대체하는 형태로 사용됩니다. 익명 함수는 fun 키워드를 사용하여 정의하며, 매개변수와 반환 타입을 지정할 수 있습니다. 아래에서 익명 함수에 대해 알아보겠습니다.
1. 기본 형식
val add: (Int, Int) -> Int = fun(x: Int, y: Int): Int {
return x + y
}
- val add: 변수 add를 선언합니다.
- (Int, Int) -> Int: 함수의 시그니처를 나타내는 함수 타입입니다.
- = fun(x: Int, y: Int): Int { return x + y }: 익명 함수의 정의입니다.
2. 타입 생략
val add = fun(x: Int, y: Int): Int {
return x + y
}
변수 선언 시 타입 생략이 가능하며, 컴파일러가 타입을 추론합니다.
3. 람다식과 익명 함수의 비교
// 람다식
val lambdaAdd: (Int, Int) -> Int = { x, y -> x + y }
// 익명 함수
val anonymousAdd: (Int, Int) -> Int = fun(x: Int, y: Int): Int {
return x + y
}
람다식과 익명 함수는 비슷하지만, 익명 함수에서는 매개변수의 타입을 명시적으로 선언해야 합니다.
4. 고차 함수와 함께 사용
fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
val result = operate(5, 3, fun(x, y): Int {
return x + y
})
고차 함수의 매개변수로 익명 함수를 전달하는 예시입니다.
5. 함수의 생략된 형식 (Function Literals with Receiver)
val multiply: Int.(Int) -> Int = fun Int.(x: Int): Int = this * x
val result = 5.multiply(3)
익명 함수를 사용하여 함수의 생략된 형식을 활용하는 예시입니다.
익명 함수는 특히 함수의 타입을 명시적으로 지정하고 싶을 때, 혹은 여러 줄의 코드로 구성된 함수를 사용해야 할 때 유용합니다. 그러나 람다식이 간결하면서도 표현력이 뛰어나기 때문에, 주로 람다식이 선호되고 많이 사용됩니다.
With ChatGPT
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린 확장 함수 (0) | 2023.12.17 |
---|---|
코틀린 로컬 함수 (0) | 2023.12.17 |
코틀린 고차 함수 (0) | 2023.12.17 |
코틀린 단일 표현식 함수 (0) | 2023.12.16 |
기본적인 함수의 특징 (0) | 2023.12.13 |