이 항목 에서 는 매개 변수 를 정의 하 고 함수 , 메 서 드 및 속성 에 인수 를 전달 하 기 위한 언어 지원 에 대해 설명 합니다 . 
 여기 서 는 매개 변수 를 참조 로 전달 하 는 방법 과 때 마다 인수 의 개수 가 달라질 수 있 는 메서 드 를 정의 하 고 사용 하 는 방법 도 설명 합니다 . 매개 변수 및 인수 
 매개 변수 라는 용어 는 제공 되 어야 할 값 의 이름 을 설명 하 는 데 사용 됩니다 . 
 인수 라는 용어 는 각 매개 변수 에 대해 제공 되 는 값 을 나타냅니다 . 매개 변수 는 튜플 또는 변환 형식 으로 지정 하 거나 이 둘 의 몇 가지 조합 으로 지정 할 수 있 습니다 . 
 명시 적 매개 변수 이름 을 사용 하 여 인수 를 전달 할 수 있 습니다 . 메 서드 의 매개 변수 는 선택 적 요소 로 지정 하 거나 기본 값 을 제공 할 수 있 습니다 . 매개 변수 패턴 
 함수 와 메서 드 에 제공 되 는 매개 변수 는 일반 적 으로 공백 을 사용 하 여 구분 되 는 패턴 입니다 . 
 즉 , 원칙 적 으로 일치 식 ( F #) 에서 설명 하 는 임의 의 패턴 을 함수 또는 메 서드 의 매개 변수 목록 에 사용 할 수 있 습니다 . 메 서드 의 인수 전달 에 는 일반 적 으로 튜플 형식 이 사용 됩니다 . 
 튜플 형식 은 . NET 메 서드 에서 인수 가 전달 되 는 방식 에 일치 하 므로 이 와 같이 튜플 형식 을 사용 하 면 다른 . NET 언어 의 관점 에서 볼 때 더 명확 한 결과 를 얻 을 수 있 습니다 . 변환 형식 은 대부분 의 경우 let 바인딩 을 사용 하 여 만든 함수 에 사용 됩니다 . 
 다음 의사 코드 에서 는 튜플 및 커리 된 인수 의 예 를 보여 줍니다 . 
 인수 중 일부 는 튜플 에 포함 되 고 다른 일부 는 포함 되 지 않 은 경우 조합 된 형식 을 사용 할 수 있 습니다 . 
 매개 변수 목록 에 다른 패턴 을 사용 할 수 도 있 지만 모든 가능 한 입력 에 매개 변수 패턴 이 일치 하 지 않 으면 런타임 에 완전 한 일치 가 이루어지 지 않 을 수 있 습니다 . 매개 변수 목록 에 지정 된 패턴 에 인수 의 값 이 일치 하 지 않 으면 MatchFailureException 예외 가 발생 합니다 . 매개 변수 패턴 에 의해 불 완전 한 일치 가 나타나 면 컴파일러 에서 경고 가 발생 합니다 . 이러 한 문제 와 관련 하 여 매개 변수 목록 에 자주 사용 되 는 패턴 으로 와일드카드 패턴 이 있 습니다 . 제공 되 는 모든 인수 를 간단히 무시 하 고 싶 은 경우 매개 변수 목록 에 와일드카드 패턴 을 사용 합니다 . 다음 코드 에서 는 인수 목록 에 와일드카드 패턴 을 사용 하 는 방법 을 보여 줍니다 . F # 
 다음 코드 에서 와 같이 대개 문자열 배열 로 제공 되 는 명령 줄 인수 가 필요 하 지 않 거나 프로그램 의 주 진입 점 에 전달 되 는 인수 같이 전달 된 인수 가 필요 하 지 않 은 경우 에 와일드카드 패턴 이 유용 할 수 있 습니다 . 
 인수 에 자주 사용 되 는 다른 패턴 으로 는 as 패턴 과 구별 된 공용 구조 체 에 관련 된 식별자 패턴 및 활성 패턴 이 있 습니다 . 다음 과 같이 단일 사례 의 구별 된 공용 구조 체 패턴 을 사용 할 수 있 습니다 . F # 
 현재 패턴 인수 다음 예제 에서 처럼 에서 원 하 는 형식 으로 변형 하 는 경우 매개 변수 이름 으로 , 예 를 들 어 , 유용 할 수 있 습니다 . 
 다음 코드 줄 에 나와 있 는 것 과 같이 as 패턴 을 사용 하 여 일치 하 는 값 을 로컬 값 으로 저장 할 수 있 습니다 . 
 그 밖 에 자주 사용 되 는 패턴 으로 는 암시 적 인수 에 대한 패턴 일치 를 즉시 수행 하 는 람다 식 을 함수 본문 으로 제공 하 여 명명 되 지 않 은 마지막 인수 를 남기 는 함수 가 있 습니다 . 다음 코드 줄 에서 는 이 와 관련 된 예 를 보여 줍니다 . F # 
 이 코드 에서 는 제네릭 목록 을 취한 다음 목록 이 비 어 있 으면 true 를 반환 하 고 그렇 지 않 으면 false 를 반환 하 는 함수 를 정의 합니다 . 이 와 같 은 기술 을 사용 하 면 코드 를 읽 고 이해 하 기 가 더 어려워질 수 있 습니다 . 때로 는 불 완전 한 일치 와 관련 된 패턴 이 유용 하 게 사용 될 수 도 있 습니다 . 예 를 들 어 프로그램 의 목록 에 요소 가 세 개 뿐 이 라는 사실 을 알 고 있 는 경우 매개 변수 목록 에 다음 과 같 은 패턴 을 사용 할 수 도 있 습니다 . 
 불 완전 한 일치 와 관련 된 패턴 은 프로토타입 을 신속 하 게 작성 해야 하 거나 기타 목적 을 위해 임시 로 필요 한 경우 에 만 사용 하 는 것 이 좋 습니다 . 컴파일러 는 다음 코드 에 대해 경고 를 생성 합니다 . 이 와 같 은 패턴 은 모든 가능 한 입력 의 일반 적 인 사례 를 모두 처리 할 수 없 으므로 구성 요소 API 에 는 적합 하 지 않 습니다 . 명명 된 인수 
 메 서드 의 인수 는 쉼표 로 구분 된 인수 목록 에서 차지 하 는 위치 로 지정 할 수 도 있 고 이름 을 제공 하 여 메 서 드 에 명시 적 으로 전달 할 수 도 있 습니다 . 인수 를 명시 적 으로 전달 하 는 경우 에 는 이름 뒤 에 등호 와 전달 할 값 을 추가 해야 합니다 . 
 이름 을 제공 하 여 인수 를 지정 하 는 경우 인수 의 표시 순서 가 선언 에 사용 된 순서 와 달라도 됩니다 . 명명 된 인수 를 사용 하 면 코드 를 더 쉽 게 읽 을 수 있 고 메 서드 매개 변수 의 순서 를 바꾸 는 경우 등 과 같이 API 를 특정 방식 으로 변경 할 때 그 변경 내용 에 코드 를 더 쉽 게 맞출 수 있 습니다 . 
 명명 된 인수 는 메 서 드 에 만 사용 할 수 있 으며 let 바인딩 된 함수 , 함수 값 또는 람다 식 에 는 사용 할 수 없 습니다 . 
 다음 코드 예제 에서 는 명명 된 인수 를 사용 하 는 방법 을 보여 줍니다 . 
 클래스 생성자 의 호출 에서 명명 된 인수 과 유사 한 구문 을 사용 하 여 클래스 의 속성 값 을 설정 할 수 있 습니다 . 다음 예 에서 는 이 구문 을 보여 줍니다 . F # 
 자세 한 내용 은 생성자 ( F #) 를 참조 하 십시오 . 
 매개 변수 이름 앞 에 물음표 를 사용 하 여 메 서 드 에 대한 선택 적 매개 변수 를 지정 할 수 있 습니다 . 
 선택 적 매개 변수 는 F # 옵션 형식 으로 해석 되 므로 옵션 형식 을 쿼리 하 는 일반 적 인 방법 , 즉 match 식 에 Some 및 None 을 사용 하 여 해당 매개 변수 를 쿼리 할 수 있 습니다 . 선택 적 매개 변수 는 멤버 에 대해서 만 허용 되 며 let 바인딩 을 사용 하 여 만든 함수 에 는 허용 되 지 않 습니다 . 선택 적 인수 의 기본 값 을 설정 하 는 defaultArg 함수 를 사용 할 수 도 있 습니다 . 
 함수 는 선택 적 매개 변수 를 첫째 인수 로 취하 고 기본 값 을 둘째 인수 로 취합니다 . 다음 예제 에서 는 선택 적 매개 변수 를 사용 하 는 방법 을 보여 줍니다 . 
 F # 에서 는 매개 변수 를 참조 로 전달 하 도록 지정 하 는 byref 키워드 를 지원 합니다 . 
 이 와 같이 매개 변수 를 참조 로 전달 하 면 함수 를 실행 한 후 에 도 값 의 변경 내용 이 모두 유지 됩니다 . byref 
 매개 변수 에 제공 되 는 값 은 변경 할 수 있 는 값 이 어야 합니다 . 또는 적절 한 형식 의 참조 셀 을 전달 할 수 있 습니다 . . NET 언어 에서 는 매개 변수 를 참조 로 전달 하 는 방법 에 기초 하 여 함수 에서 여러 개 의 값 을 반환 할 수 있 습니다 . 
 F # 에서 는 이 와 같 은 목적 으로 튜플 을 반환 하 거나 변경 가능 한 참조 셀 을 매개 변수 로 사용 할 수 있 습니다 . byref 
 매개 변수 는 주로 . NET 라이브러리 와 의 상호 운용 성 을 위해 필요 합니다 . 다음 예제 에서 는 byref 키워드 를 사용 하 는 방법 을 보여 줍니다 . 
 참조 셀 을 매개 변수 로 사용 할 때 는 다음 코드 의 Increment 에 대한 첫 번 째 호출 에 나와 있 는 것 과 같이 단순히 ref 연산자 만 추가 해서 되 는 것 이 아니 라 참조 셀 을 명명 된 값 으로 만들 고 이 를 매개 변수 로 사용 해야 합니다 . 참조 셀 을 만들 면 내부 값 의 복사본 이 만들 어 지 므로 첫 번 째 호출 에서 는 단지 임시 값 이 증가 할 뿐 입니다 . F # 
 튜플 을 반환 값 으로 사용 하 여 . NET 라이브러리 메 서 드 에 임의 의 out 매개 변수 를 저장 할 수 있 습니다 . 
 또는 out 매개 변수 를 byref 매개 변수 로 취급 할 수 있 습니다 . 다음 코드 예제 에서 는 이 두 가지 방법 을 모두 보여 줍니다 . F # 
 매개 변수 배열 
 때로 는 형식 이 각기 다른 매개 변수 를 임의 의 개수 만큼 취하 는 함수 를 정의 해야 할 수 도 있 습니다 . 
 사용 할 수 있 는 모든 형식 을 설명 하 는 모든 가능 한 경우 의 오버 로드 된 메서 드 를 만든 다는 것 은 사실 상 불 가능 한 일 입니다 . . NET 플랫폼 에서 는 매개 변수 배열 기능 을 통해 그 와 같 은 메서 드 를 지원 합니다 . 해당 시그 니 처 에 매개 변수 배열 을 취하 는 메서 드 에 대해 임의 개수 의 매개 변수 를 제공 할 수 있 습니다 . 매개 변수 는 배열 에 추가 됩니다 . 배열 요소 의 형식 에 따라 함수 에 전달 할 수 있 는 매개 변수 형식 이 결정 됩니다 . Object 
 를 요소 형식 으로 사용 하 여 매개 변수 배열 을 정의 하 면 클라이언트 코드 에서 값 을 그 형식 에 상관없이 전달 할 수 있 습니다 . F # 의 경우 매개 변수 배열 은 메 서드 에서 만 정의 할 수 있 습니다 . 
 독립 실행 형 함수 나 모듈 에 정의 된 함수 에 는 매개 변수 배열 을 사용 할 수 없 습니다 . 매개 변수 배열 을 정의 하 는 데 는 ParamArray 특성 을 사용 합니다 . 
 ParamArray 특성 은 마지막 매개 변수 에 만 적용 할 수 있 습니다 . 다음 코드 에서 는 매개 변수 배열 을 취하 는 . NET 메 서 드 를 호출 하 는 방법 과 F # 에서 매개 변수 배열 을 취하 는 메 서드 가 있 는 형식 을 정의 하 는 방법 을 보여 줍니다 . 
 프로젝트 에서 실행 될 때 이전 코드 의 출력 은 다음 과 같 습니다 .