함수가 정의되었음에도 입력 매개변수 개수를 모를 때가 있습니다. 입력받은 매개변수 중 가장 작은 매개변수만 반환하는 아래 함수가 그 예시입니다. 예시:
a = smallest (1, 2, 3); b = smallest (1, 2, 3, 4);
이 예시에서, a와 b는 모두 1입니다. smallest 함수를
작성하는 한 방법은
function val = smallest (arg1, arg2, arg3, arg4, arg5) body endfunction
으로, nargin의 값으로 고려할 입력 매개변수를 결정할 수 있습니다. 문제는 이 접근 방법으로는 한정된 개수의
입력 매개변수만 다룰 수 있다는 것입니다.
특별 매개변수 이름 varargin을 함수 매개변수 목록 끝에 사용하면, 함수가 입력받은 대로 처리합니다. varargin를
사용하는 함수의 모습입니다.
function val = smallest (varargin) body endfunction
함수 몸체에서는 변수 varargin으로 입력 매개변수에 접근합니다. 이 변수는 모든 입력 매개변수를 담은 낱칸
배열입니다. 낱칸 배열을 처리하는 방법은 낱칸 배열을 참고하십시오.
이제 smallest 함수를 아래와 같이 정의할 수 있습니다.
function val = smallest (varargin)
val = min ([varargin{:}]);
endfunction
이 방식은 입력 매개변수 개수에 개의치 않는데다가 매우 간단한 방법입니다.
조금 더 복잡한 varargin 예시로 모든 입력 매개변수를 출력하는
print_arguments 함수가 있습니다. 이 함수를 아래처럼 정의할 수 있습니다.
function print_arguments (varargin)
for i = 1:length (varargin)
printf ("Input argument %d: ", i);
disp (varargin{i});
endfor
endfunction
이 함수는 아래처럼 출력합니다.
print_arguments (1, "two", 3);
-| Input argument 1: 1
-| Input argument 2: two
-| Input argument 3: 3
낱칸 배열 매개변수에서 첫 번째 문자열 원소 이전까지의 낱칸 원소를 reg에 반환하고, 첫 문자열 원소부터 남은 원소는 모두 속성에 반환합니다.
예시:
[reg, prop] = parseparams ({1, 2, "linewidth", 10})
reg =
{
[1,1] = 1
[1,2] = 2
}
prop =
{
[1,1] = linewidth
[1,2] = 10
}
parseparams 함수를 정규 수치 매개변수와 varargin 낱칸 배열에 담긴 속성/값 쌍인 추가 매개변수를 분리하는데에 사용할 수 있습니다.
두 번째 호출 형식의 선택지로 직접 이름/값 쌍으로 기본값을 지정합니다. 매개변수가 이름/값 쌍이 아니거나 선택지가 가능한 선택지와 맞지 않으면, 오류가 발생합니다.
m 기록철 함수에서 호출하면, 오류 앞에 호출한 함수의 이름이 붙습니다.
선택지는 대소문자를 구분하지 않고 비교합니다.
같이 보기: varargin, inputParser.