[c#] 람다식을 사용하여 어떻게 고차 함수를 구현할 수 있나요?
고차 함수(higher-order function)는 다른 함수를 매개변수로 받거나 함수를 반환하는 함수를 말합니다. C#에서는 람다식을 사용하여 고차 함수를 구현할 수 있습니다.
매개변수로 함수 전달하기
using System;
public class HigherOrderFunctionExample
{
public static void PerformOperation(int x, int y, Func<int, int, int> operation)
{
int result = operation(x, y);
Console.WriteLine(result);
}
public static void Main()
{
PerformOperation(5, 3, (a, b) => a + b); // 8 출력
PerformOperation(5, 3, (a, b) => a * b); // 15 출력
}
}
위 예제에서 PerformOperation
메서드는 Func<int, int, int>
타입의 매개변수를 받아들이는데, 이는 두 개의 정수를 인자로 받고 정수를 반환하는 함수를 나타냅니다. Main
메서드에서 람다식을 사용하여 PerformOperation
을 호출할 때 ‘+’와 ‘*’ 연산을 수행하는 함수를 전달했습니다.
함수를 반환하기
using System;
public class HigherOrderFunctionExample
{
public static Func<int, int, int> GetOperation(char operation)
{
switch (operation)
{
case '+':
return (a, b) => a + b;
case '*':
return (a, b) => a * b;
default:
throw new ArgumentException("Unsupported operation");
}
}
public static void Main()
{
Func<int, int, int> addFunction = GetOperation('+');
Console.WriteLine(addFunction(5, 3)); // 8 출력
Func<int, int, int> multiplyFunction = GetOperation('*');
Console.WriteLine(multiplyFunction(5, 3)); // 15 출력
}
}
위 예제에서 GetOperation
메서드는 입력된 연산에 따라 덧셈 또는 곱셈을 수행하는 함수를 반환합니다. Main
메서드에서 반환된 함수를 사용하여 각각의 연산을 수행했습니다.
이와 같이 C#에서는 람다식을 사용하여 고차 함수를 구현할 수 있습니다.