코틀린에서 고차 함수의 매개변수로 함수를 전달하는 방법은?
_____고차 함수는 함수를 매개변수로 받거나 함수를 반환하는 함수입니다.
Q2: 코틀린에서 고차 함수의 매개변수로 함수를 전달하려면 어떻게 해야 하나요?
고차 함수의 매개변수 타입을 `(인수타입) -> 반환타입` 형태로 정의하고, 호출 시 람다식이나 함수 참조를 전달하면 됩니다.
Q3: 고차 함수 매개변수 선언 예시는?
```kotlin
fun operate(x: Int, y: Int, operation: (Int, Int) -> Int): Int {
return operation(x, y)
}
```
Q4: 함수를 매개변수로 전달하는 예시는?
람다식 전달:
```kotlin
val result = operate(3, 4) { a, b -> a + b }
```
함수 참조 전달:
```kotlin
fun sum(a: Int, b: Int) = a + b
val result = operate(3, 4, ::sum)
```
Q5: 매개변수가 1개인 함수 전달 방법은?
```kotlin
fun applyToFive(operation: (Int) -> Int): Int {
return operation(5)
val result = applyToFive { it * 2 }
```
Q6: 매개변수로 함수 타입을 여러 개 전달할 수도 있나요?
네, 함수 타입 매개변수는 여러 개 가능하며 각각 타입을 명시합니다.
```kotlin
fun combinedOperation(x: Int, f1: (Int) -> Int, f2: (Int) -> Int): Int {
return f2(f1(x))
}
```
Q7: 익명 함수도 매개변수로 전달할 수 있나요?
네, 가능합니다.
```kotlin
operate(3, 4, fun(a: Int, b: Int): Int { return a * b })
```
Q8: 기본 함수 타입 매개변수에 기본값을 줄 수 있나요?
네, 가능합니다.
```kotlin
fun operate(x: Int, y: Int, operation: (Int, Int) -> Int = { a, b -> a + b }): Int {
return operation(x, y)
}
```
---
요약하면, 코틀린에서 고차 함수 매개변수로 함수를 전달하려면 함수 타입 `(매개변수 타입) -> 반환 타입`을 선언하고, 호출 시 람다식, 함수 참조(`::함수명`), 또는 익명 함수를 인자로 전달하면 됩니다.
고차 함수는 다른 함수를 인자로 받거나, 함수를 반환하는 함수를 의미합니다.
이를 통해 코드의 재사용성과 가독성을 높일 수 있습니다.
아래에서는 고차 함수의 개념과 함께 매개변수로 함수를 전달하는 방법에 대해 자세히 설명하겠습니다.
1. 고차 함수 정의하기 고차 함수를 정의할 때는 함수의 매개변수로 함수를 명시합니다.
함수의 타입은 `(인자 타입) -> 반환 타입` 형식으로 정의합니다.
```kotlin fun higherOrderFunction(action: (Int, Int) -> Int): Int { return action(5,
10) } ``` 위의 예제에서 `higherOrderFunction`은 `action`이라는 함수를 매개변수로 받습니다.
`action`은 두 개의 `Int`를 입력받아 `Int`를 반환하는 함수입니다.
2. 고차 함수 호출하기 고차 함수를 호출할 때는 매개변수로 사용할 함수를 정의한 후 전달합니다.
다음은 두 개의 숫자를 더하는 함수를 정의하고 이를 고차 함수에 전달하는 예제입니다.
```kotlin fun add(a: Int, b: Int): Int { return a + b } fun main() { val result = higherOrderFunction(::add) // add 함수를 전달 println(result) // 출력: 15 } ``` 위의 코드에서 `::add`는 `add` 함수를 참조하는 것으로, `higherOrderFunction`에 전달됩니다.
3. 람다 표현식 사용하기 코틀린에서는 람다 표현식을 사용하여 함수를 간결하게 정의할 수 있습니다.
람다 표현식은 `{ 인자 -> 표현식 }` 형태로 작성됩니다.
다음은 람다 표현식을 사용하여 고차 함수를 호출하는 예제입니다.
```kotlin fun main() { val result = higherOrderFunction { a, b -> a + b } // 람다 표현식 전달 println(result) // 출력: 15 } ``` 여기서 `{ a, b -> a + b }`는 두 개의 인자를 받아서 더하는 람다 함수입니다.
이 람다 함수는 `higherOrderFunction`에 전달되어 사용됩니다.
4. 여러 개의 함수를 매개변수로 전달하기 고차 함수는 여러 개의 함수를 매개변수로 받을 수도 있습니다.
다음은 두 개의 함수를 매개변수로 받아서 각각의 결과를 출력하는 예제입니다.
```kotlin fun operate(a: Int, b: Int, operation1: (Int, Int) -> Int, operation2: (Int, Int) -> Int) { val result1 = operation1(a, b) val result2 = operation2(a, b) println("Result of operation1: $result1") println("Result of operation2: $result2") } fun main() { operate(5, 10, ::add) { a, b -> a - b } // add 함수와 람다 표현식 전달 } ``` 위의 코드에서 `operate` 함수는 두 개의 함수를 매개변수로 받아 각각의 연산 결과를 출력합니다.
`::add`와 람다 표현식 `{ a, b -> a - b }`를 전달하여 더하기와 빼기 연산을 수행합니다.
5. 고차 함수의 반환값으로 함수 사용하기 고차 함수는 함수를 반환할 수도 있습니다.
다음은 두 개의 숫자를 더하는 함수를 반환하는 고차 함수의 예제입니다.
```kotlin fun createAdder(): (Int) -> Int { return { number -> number + 5 } } fun main() { val adder = createAdder() println(adder(
10)) // 출력: 15 } ``` 위의 코드에서 `createAdder` 함수는 `Int`를 입력받아 `Int`를 반환하는 함수를 반환합니다.
`adder`는 `createAdder`에서 반환된 함수를 참조하며, 이를 통해 10에 5를 더한 결과를 출력합니다.
결론 코틀린의 고차 함수는 함수형 프로그래밍의 강력한 도구로, 코드의 재사용성과 가독성을 높이는 데 큰 도움이 됩니다.
매개변수로 함수를 전달하거나, 함수를 반환하는 방식으로 다양한 패턴을 구현할 수 있습니다.
이러한 기능을 활용하여 더 간결하고 효율적인 코드를 작성할 수 있습니다.
작성자:
최윤서 [비회원]
| 작성일자: 1년 전
2024-09-09 09:47:19
조회수: 137 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 137 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.