Main Content

반복되는 인수의 유효성 검사하기

반복되는 인수는 인수로 반복하여 지정할 수 있는 위치 인수입니다. Repeating 특성을 포함하는 arguments 블록에 반복되는 인수를 선언하십시오.

arguments (Repeating)
    arg1
    arg2
    ...
end

함수는 입력값과 출력값에 대해 각각 하나의 Repeating arguments 블록을 가질 수 있습니다. Repeating input arguments 블록은 하나 이상의 반복되는 인수를 포함할 수 있는 반면, Repeating output arguments 블록은 반복되는 인수를 하나만 포함할 수 있습니다.

Repeating arguments 블록을 정의하는 함수는 블록에 있는 모든 인수를 전혀 사용하지 않거나 한 번 이상 사용하여 호출할 수 있습니다. 함수에 대한 호출에 반복되는 인수를 포함할 경우에는 반복될 때마다 Repeating arguments 블록의 모든 인수가 포함되어야 합니다.

예를 들어, Repeating arguments 블록이 입력 인수 xy를 정의하는 경우에는 각 반복에 xy가 둘 다 포함되어야 합니다.

반복되는 입력 인수는 디폴트 값을 지정할 수 없으므로 선택 사항일 수 없습니다. 하지만 반복되는 어떤 인수도 포함하지 않고 함수를 호출할 수 있습니다.

함수는 위치 인수 뒤, 이름-값 인수 앞에 반복되는 입력 인수를 선언해야 합니다. Repeating 블록 내에는 이름-값 인수를 지정할 수 없습니다. 이름-값 인수에 대한 자세한 내용은 이름-값 인수의 유효성 검사하기 항목을 참조하십시오.

함수 내에서, 각각의 반복되는 인수는 함수 호출에 전달된 반복 횟수와 동일한 개수의 요소를 포함하는 셀형 배열이 됩니다. 유효성 검사는 셀형 배열의 각 요소에 적용됩니다. 이 인수를 사용하지 않고 함수를 호출하면 셀형 배열의 크기는 1×0이 됩니다. 다시 말해, 배열이 비어 있습니다.

예를 들어, 이 함수는 반복되는 인수 3개(x, yoption)로 구성된 블록을 선언합니다.

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 입력값에 대해 반복되는 인수를 받습니다. 반복되는 인수로 지정된 값은 함수 본문에서 셀형 배열 xy를 참조해 사용할 수 있습니다. 이 예제에서는 plot 함수에 대한 필수 입력값과 일치시키기 위해 xy의 값을 교대로 배치하고 있습니다(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

참고 항목

|

관련 항목