반복되는 인수의 유효성 검사하기
반복되는 인수는 인수로 반복하여 지정할 수 있는 위치 인수입니다. Repeating
특성을 포함하는 arguments
블록에 반복되는 인수를 선언하십시오.
arguments (Repeating) arg1 arg2 ... end
함수는 입력값과 출력값에 대해 각각 하나의 Repeating
arguments
블록을 가질 수 있습니다. Repeating
input arguments 블록은 하나 이상의 반복되는 인수를 포함할 수 있는 반면, Repeating
output arguments 블록은 반복되는 인수를 하나만 포함할 수 있습니다.
Repeating
arguments
블록을 정의하는 함수는 블록에 있는 모든 인수를 전혀 사용하지 않거나 한 번 이상 사용하여 호출할 수 있습니다. 함수에 대한 호출에 반복되는 인수를 포함할 경우에는 반복될 때마다 Repeating
arguments
블록의 모든 인수가 포함되어야 합니다.
예를 들어, Repeating
arguments
블록이 입력 인수 x
및 y
를 정의하는 경우에는 각 반복에 x
와 y
가 둘 다 포함되어야 합니다.
반복되는 입력 인수는 디폴트 값을 지정할 수 없으므로 선택 사항일 수 없습니다. 하지만 반복되는 어떤 인수도 포함하지 않고 함수를 호출할 수 있습니다.
함수는 위치 인수 뒤, 이름-값 인수 앞에 반복되는 입력 인수를 선언해야 합니다. Repeating
블록 내에는 이름-값 인수를 지정할 수 없습니다. 이름-값 인수에 대한 자세한 내용은 이름-값 인수의 유효성 검사하기 항목을 참조하십시오.
함수 내에서, 각각의 반복되는 인수는 함수 호출에 전달된 반복 횟수와 동일한 개수의 요소를 포함하는 셀형 배열이 됩니다. 유효성 검사는 셀형 배열의 각 요소에 적용됩니다. 이 인수를 사용하지 않고 함수를 호출하면 셀형 배열의 크기는 1×0이 됩니다. 다시 말해, 배열이 비어 있습니다.
예를 들어, 이 함수는 반복되는 인수 3개(x
, y
및 option
)로 구성된 블록을 선언합니다.
function [xCell,yCell,optionCell] = fRepeat(x,y,option) arguments (Repeating) x double y double option {mustBeMember(option,["linear","cubic"])} end % Function code % Return cell arrays xCell = x; yCell = y; optionCell = option; end
입력값 없이 또는 입력값 3개의 배수를 사용하여 함수를 호출할 수 있습니다. MATLAB®은 각 인수에 대해 해당 인수에 전달된 모든 값을 포함하는 셀형 배열을 만듭니다. fRepeat
에 대한 다음 호출은 반복되는 인수 3개로 구성된 세트 2개를 전달합니다.
[xCell,yCell,optionCell] = fRepeat(1,2,"linear",3,4,"cubic")
xCell = 1×2 cell array {[1]} {[3]} yCell = 1×2 cell array {[2]} {[4]} optionCell = 1×2 cell array {["linear"]} {["cubic"]}
다음 함수는 Repeating
arguments
블록의 x
입력값과 y
입력값에 대해 반복되는 인수를 받습니다. 반복되는 인수로 지정된 값은 함수 본문에서 셀형 배열 x
와 y
를 참조해 사용할 수 있습니다. 이 예제에서는 plot
함수에 대한 필수 입력값과 일치시키기 위해 x
와 y
의 값을 교대로 배치하고 있습니다(plot(x1,y1,…)
).
function myPlotRepeating(x,y) arguments (Repeating) x (1,:) double y (1,:) double end % Function code % Interleave x and y z = reshape([x;y],1,[]); % Call plot function if ~isempty(z) plot(z{:}); end end
반복적인 인수 쌍을 사용하여 이 함수를 호출합니다.
x1 = 1:10; y1 = sin(x1); x2 = 0:5; y2 = sin(x2); myPlotRepeating(x1,y1,x2,y2)
반복적인 인수에 varargin
사용 방지하기
인수 유효성 검사를 사용하는 함수에 varargin
을 사용하는 것은 권장하지 않습니다. repeating arguments 블록에서 varargin
의 크기 또는 클래스가 제한될 경우 이 제한 사항은 varargin
의 모든 값에 적용됩니다.
varargin
을 사용하여 레거시 코드를 지원하는 경우, 이 인수는 Repeating
arguments
블록에 있는 유일한 인수여야 합니다.
예를 들어, 다음 함수는 두 개의 필수 위치 인수와 함께 varargin
을 반복되는 인수로 정의합니다.
function f(a, b, varargin) arguments a uint32 b uint32 end arguments (Repeating) varargin end % Function code ... end