가변 길이 반환 목록
가변 길이 반환 목록 (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에 대한 내용도 함께 보면 좋아요.