함수가 정의되었음에도 입력 매개변수 개수를 모를 때가 있습니다. 입력받은 매개변수 중 가장 작은 매개변수만 반환하는 아래 함수가 그 예시입니다. 예시:
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.