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 \ # 함수 식 프로 그래 밍 의 매개 변수 순서 중요성
부분 적 인 응용 기술 과 일부 응용 기술 을 응용 할 때 매개 변수 순서 의 중요성 을 설명 하 는 간단 한 이유 가 있 습 니 다. 함수 의 일부 응용 은 매개 변수 목록 의 시작 위치 에서 만 시작 할 수 있 습 니 다.매개 변수의 순 서 를 결정 할 때 가장 중요 한 것 은 함수 에서 어떤 매개 변수 가 부분 적 인 응용 을 사용 할 수 있 는 지 를 고려 하 는 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Linux Shell 프로 그래 밍 - 텍스트 처리 grep, sed사용자 가 지정 한 '모드' 에 따라 대상 텍스트 를 일치 하 게 검사 하고 일치 하 는 줄 을 인쇄 합 니 다. ##포함 되 지 않 음, 역방향 일치 \ ##키워드 앞 뒤 가 맞지 않 고 키워드 만 일치 합 니 다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.