가변 길이 반환 목록

가변 길이 반환 목록 (Variable-length Return Lists)

특수 매개변수 이름 varargin과 비슷한 문법을 써서 함수에서 가변 개수의 출력 인자를 반환할 수 있어요. 함수가 가변 개수의 출력 인자를 반환하게 하려면 특수 출력 매개변수 이름 varargout을 사용해요. varargin과 마찬가지로 varargout은 요청된 출력 인자들을 담을 셀 배열이에요.

출처: 문서

본문

예를 들어 다음 함수는 첫 번째 출력 인자를 1로, 두 번째를 2로, 그렇게 계속 설정해요.

function varargout = one_to_n ()
  for i = 1:nargout
    varargout{i} = i;
  endfor
endfunction

이 함수를 호출하면 이런 값들을 반환해요.

[a, b, c] = one_to_n ()
     ⇒  a =  1
     ⇒  b =  2
     ⇒  c =  3

varargin(varargout)이 입력(출력) 매개변수 목록의 마지막 요소로 나타나지 않으면 특수하지 않아요. 다른 매개변수 이름과 똑같이 처리돼요.

deal

[r1, r2, …, rn] = deal (a)
[r1, r2, …, rn] = deal (a1, a2, …, an)

입력 매개변수를 대응하는 출력 매개변수로 복사해요. 입력 매개변수가 하나만 주어지면 그 값이 각 출력으로 복사돼요.

예를 들어

[a, b, c] = deal (x, y, z);

는 다음과 동등해요.

a = x;
b = y;
c = z;

그리고

[a, b, c] = deal (x);

는 다음과 동등해요.

a = b = c = x;

프로그래밍 참고: deal은 셀 배열이나 구조체에서 파생된 쉼표로 구분된 리스트와 함께 자주 쓰여요. 그런데 사실 이건 불필요해요. 인터프리터가 함수 호출의 오버헤드 없이 같은 동작을 수행할 수 있거든요. 예를 들어:

c = {[1 2], "Three", 4};
[x, y, z] = c{:}
⇒
   x =

      1   2

   y = Three
   z =  4

더 알아보기

  • 가변 개수의 입력 인자를 받는 varargin에 대한 내용도 함께 보면 좋아요.