5장. 상위 주문 기능
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
끝이 없는 쇼에 다시 오신 것을 환영합니다. 이 장에서는 고차 함수의 용도에 대해 살펴보겠습니다. C#에서 고차 함수를 사용하여 수고를 덜고 실패할 가능성이 적은 코드를 만드는 새로운 방법을 보여드리겠습니다.
그렇다면 고차 함수는 무엇일까요? 다소 생소한 이 이름은 매우 간단한 것을 나타냅니다. 사실 LINQ를 사용해 본 적이 있다면 고차 함수를 한 번쯤 사용해 보셨을 것입니다. 고차 함수는 두 가지 종류가 있습니다:
varliberatorCrew=new[]{"Roj Blake","Kerr Avon","Vila Restal","Jenna Stannis","Cally","Olag Gan","Zen"};varfilteredList=liberatorCrew.Where(x=>x.First()>'M');
Where() 함수에 전달된 것은 화살표 표현식으로, 이름 없는 함수를 작성하는 줄임말입니다. 장문 버전은 다음과 같습니다:
functionboolIsGreaterThanM(charc){returnc>'m';}
따라서 여기서는 함수가 다른 함수에 매개변수로 전달되어 내부의 다른 곳에서 실행되도록 했습니다.
이것은 고차 함수를 사용하는 또 다른 예입니다:
publicFunc<int,int>MakeAddFunc(intx)=>y=>x+y;
여기에는 화살표가 하나가 아니라 두 개가 있다는 것을 주목하세요. x 정수를 가져와서 새 함수를 반환합니다. 새 함수에서 x 참조는 원래 MakeAddFunc() 을 호출할 때 제공된 값으로 채워집니다.
예를 들어
varaddTenFunction=MakeAddFunc(10);varanswer=addTenFunction(5);// answer is 15
이 예제에서 10 을 MakeAddFunc() 에 전달하면, 전달한 추가 정수에 10을 더하는 새로운 함수가 만들어집니다.
간단히 말해, 고차 함수는 다음 속성 중 하나 이상을 가지고 있습니다:
-
함수를 매개변수로 받습니다.
-
함수를 반환 유형으로 반환합니다.
C#에서는 일반적으로 Func (반환 유형이 있는 함수의 경우) 또는 Action ( void) 델리게이트 유형을 반환하는 함수의 경우)를 사용하여 이 모든 작업을 수행합니다. 고차 함수는 구현하기가 훨씬 더 쉬운 매우 간단한 아이디어이지만 코드베이스에 미칠 수 있는 효과는 놀랍습니다.
이 장에서는 고차 함수를 사용하여 일상적인 코딩을 개선하는 방법을 안내해 드리겠습니다. 또한 결합기라는 고차 함수의 한 차원 높은 사용법을 소개하겠습니다. 결합자를 사용하면 함수를 전달하여 더 복잡하고 유용한 동작을 만들 수 있습니다.
참고
조합기는 조합 논리라는 수학적 기법에서 유래했기 때문에 라고 불립니다. 다시는 이 용어를 듣거나 고급 수학에 대한 언급에 대해 걱정할 필요가 없습니다. ...