다음: 매개변수 무시하기, 이전: 다중 반환값, 상위 문서: 함수와 대본   [차례][찾아보기]


11.4 변수 길이 매개변수 목록

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

a = smallest (1, 2, 3);
b = smallest (1, 2, 3, 4);

이 예시에서, ab는 모두 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, 속성] = parseparams (매개변수)
[reg, 변수1, …] = parseparams (매개변수, 이름1, 기본1, …)

낱칸 배열 매개변수에서 첫 번째 문자열 원소 이전까지의 낱칸 원소를 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.


다음: 매개변수 무시하기, 이전: 다중 반환값, 상위 문서: 함수와 대본   [차례][찾아보기]