C \ # 함수 식 프로 그래 밍 의 부분 적 인 사용 과 부분 적 인 응용

3674 단어 프로 그래 밍
함수 식 디자인 의 핵심 은 함수 의 응용 과 함수 가 어떻게 알고리즘 의 기본 모듈 로 사용 되 는 지 와 관계 가 있다.부분 적 인 사용 기술 을 이용 하여 모든 함 수 를 함수 류 의 구성원 으로 볼 수 있 습 니 다. 이런 함 수 는 하나의 형 삼 만 있 고 부분 적 인 사용 이 있어 야 일부 응용 이 있 습 니 다.일부 응용 은 함수 모듈 화 를 가능 하 게 하 는 두 가지 기술 중 하나 이 고 다른 하 나 는 조합 이다.
C \ # 함수 식 프로 그래 밍 매개 변수의 결합
부분 적 인 세트 는 하나의 변환 기술 로 여러 개의 매개 변 수 를 받 아야 하 는 함 수 를 일련의 함수 로 바 꾸 고 후 자 는 매번 하나의 매개 변수 만 받 아들 이 고 서열 중의 다음 함수 로 돌아간다.이 함수 체인 의 끝 에 모든 매개 변 수 를 사용 할 수 있 고 원 알고리즘 이 자신의 조작 을 수행 할 수 있 도록 합 니 다.
아래 의 간단 한 함 수 를 고려 하여 C \ # 2.0 과 호 환 되 는 익명 방법 으로 문법 을 정의 합 니 다.
Func<int, int, int> add =

    delegate(int x, int y)

    {

         return x + y;

     };


이 덧셈 함 수 는 두 개의 파 라 메 터 를 받 아들 인 후에 두 개의 추가 결 과 를 되 돌려 줍 니 다. 이 함 수 를 호출 할 때 호출 프로그램 은 두 개의 파 라 메 터 를 동시에 제공 해 야 합 니 다. C \ # 문법 제약 은 다른 방법 을 허용 하지 않 습 니 다.
부분 적 인 기술 을 이 함수 에 적용 하려 면 한 번 에 하나의 매개 변수 만 받 아들 이 고 다음 함수 로 돌아 가 는 함 수 를 만 드 는 것 을 의미 합 니 다. 즉, 다음 과 같 습 니 다.
            Func<int, Func<int, int>> add =

                delegate(int x)

                {

                    return delegate(int y)

                    {

                        return x + y;

                    };

                };


부분 적 으로 사용 하 는 기본 원 리 는 Lambda 문법 으로 정의 하 는 함수 에 도 응용 할 수 있 습 니 다.
Func<int, int, int> addTest = (x, y) => x + y;


부분 적 인 사용 후의 함 수 는 다음 과 같다.
Func<int, Func<int, int>> addTest = x => (y => x + y);


현재 부분 적 인 응용 기술 을 임의의 매개 변수 에 응용 하고 함수 가 다음 과 같은 매개 변수 목록 이 있다 고 가정 합 니 다.
Func<...> f = (part1, part2, part3, ..., partX) => ...;


부분 적 으로 사용 한 함수 서명 형식 은 다음 과 같 습 니 다.
Func<...> cf = part1 => part2 => part3 => ... => partX => ...;


Lambda 표현 식 의 주체 부분 코드, 즉 마지막 = > 연산 자의 오른쪽 부분 은 변환 과정 에서 변 하지 않 습 니 다.
유형 배열 형식의 변 화 는 같은 규칙 에 따라 다음 과 같은 일반적인 의뢰 유형 을 고려 합 니 다.
Func<int, bool, string, decimal, double> 


부분 적 인 사용 후 다음 과 같은 유형의 배열 형식 을 얻 을 수 있 습 니 다.
Func<int, Func<bool, Func<string, Func<decimal, double>>>>


재 미 있 는 것 은 램 다 표현 식 의 유형 이나 C \ # 2.0 익명 방법의 유형 을 명시 적 으로 제공 하면 유형 추정 으로 도 범 형 인 자 를 추정 할 수 있다 는 것 이다. 이 는 이상 하 다. 같은 상황 에서 var 키워드 로 함 수 를 한 변수 에 저장 할 수 없 기 때문이다.
// this is invalid

var mult = (int x, int y) => x * y;


내 연 된 Lambda 표현 식 에 확장 방법 을 사용 할 수 없습니다.
부분 적 인 응용 기술 도 C \ # 류 성명 의 비교적 일반적인 방법 에 응용 할 수 있다.정적 방법 과 실례 방법 은 모두 국부 적 인 응용 기술 을 응용 할 수 있다.그 밖 에 클래스 는 부분 적 인 함수 의 외부 호출 을 가능 하 게 합 니 다.
C \ # 함수 식 프로 그래 밍 호출 함수 의 각 부분
부분 적 인 형식 함 수 를 사용 하 는 가장 주요 한 이 유 는 모든 매개 변수 가 아 닌 부분 적 인 계산 매개 변수 만 있 으 면 이 함 수 를 호출 할 수 있 기 때문이다.이 과정 은 이른바 부분 응용 이 고 일부 응용 은 함수 구축 기술 이다.
다음 코드 를 고려 하여 0 부터 부분 적 인 형식 을 사용 하 는 함 수 를 사용 합 니 다.
Func<int, Func<int, int>> add = x => y => x + y;

var add5 = add(5);


여기 서 부분 적 인 함수 add 를 호출 하 였 으 나 하나의 매개 변수 만 전달 하 였 습 니 다. 분명 한 것 은 이러한 상황 에서 덧셈 계산 을 할 수 없습니다. 두 개의 매개 변수 가 필요 하기 때문에 하나의 매개 변수 로 호출 하면 새로운 함수 로 돌아 갈 것 입 니 다.우 리 는 이 새 함 수 를 즉시 호출 하 는 것 이 아니 라 변수 에 저장 해서 나중에 사용 할 수 있 도록 합 니 다.
새로 만 든 함 수 를 호출 하면 다른 함수 처럼:
int result = add5(37);


일반적으로 일부 응용 은 본질 적 으로 범 형 에 속 하 는 함 수 를 받 아들 여 최종 적 으로 전용 하 는 새로운 함 수 를 만 듭 니 다.
C \ # 함수 식 프로 그래 밍 의 매개 변수 순서 중요성
부분 적 인 응용 기술 과 일부 응용 기술 을 응용 할 때 매개 변수 순서 의 중요성 을 설명 하 는 간단 한 이유 가 있 습 니 다. 함수 의 일부 응용 은 매개 변수 목록 의 시작 위치 에서 만 시작 할 수 있 습 니 다.매개 변수의 순 서 를 결정 할 때 가장 중요 한 것 은 함수 에서 어떤 매개 변수 가 부분 적 인 응용 을 사용 할 수 있 는 지 를 고려 하 는 것 이다.

좋은 웹페이지 즐겨찾기