arguments
함수 인수 유효성 검사 선언
구문
arguments
argName1 (dimensions) class {validators} = defaultValue
...
argNameN ...
end
arguments (Repeating)
argName1 (dimensions) class {validators}
...
argNameN ...
end
arguments (Output)
argName1 (dimensions) class {validators}
...
argNameN ...
end
arguments (Output,Repeating)
argName (dimensions) class {validators}
end
설명
입력 인수 블록
arguments ... end는 함수에 대한 입력 인수를 선언합니다. arguments 블록은 선택 사항입니다. arguments 블록을 하나 이상 포함할 경우 함수의 첫 번째 실행 가능한 라인 앞에 와야 합니다. MATLAB®은 명시적으로 Input 또는 Output 레이블이 지정되지 않은 모든 인수 블록을 입력 블록으로 처리합니다.
각 인수는 다음 구문에서 볼 수 있듯이 디폴트 값 또는 하나 이상의 제한 사항을 가질 수 있습니다.
argName (dimensions) class {validators} = defaultValue
— 입력 크기로, 둘 이상의 숫자가 쉼표로 구분된 목록으로 지정됩니다(예:(dimensions)(1,2),(3,5,2)또는(1,:)). 콜론을 사용하면 해당 차원에서 임의의 길이를 나타낼 수 있습니다.는 표현식을 포함할 수 없습니다.(dimensions)입력값의 차원은
와 정확히 일치하거나(dimensions)로 지정된 크기와 호환되어야 합니다. 예를 들어,(dimensions)(1,:)은 입력값이 1×n 행 벡터여야 함을 지정하지만, n×1 열 벡터도 호환됩니다. 이 함수는 행 벡터 입력값을 열 벡터 입력값으로 형태 변경합니다. 마찬가지로, 크기(2,3)은 스칼라 입력값을 허용하지만, 이를 2×3 행렬로 확장합니다. 자세한 내용은 크기 및 클래스의 유효성 검사하기 항목을 참조하십시오.— 클래스 또는 MATLAB 데이터형으로,classdouble과 같이 이름으로 지정됩니다. 입력값은 지정된 유형이거나 해당 유형으로 변환될 수 있는 유형이어야 합니다. 예를 들어,double을 지정하는 함수는single클래스의 값을 받아서double형으로 변환합니다. 변환에 대한 자세한 내용은 Implicit Class Conversion 항목을 참조하십시오.—{validators}mustBeNumeric,mustBeScalarOrEmpty와 같은 유효성 검사 함수의 쉼표로 구분된 목록으로, 중괄호로 묶습니다. 유효성 검사 함수는 입력 인수가 조건과 일치하지 않는 경우 오류를 발생시킵니다.와 달리 유효성 검사 함수는 입력 인수를 수정하지 않습니다. 유효성 검사 함수 목록은 인수 유효성 검사 함수 항목을 참조하십시오.class— 디폴트 값은 지정된 크기, 유형 및 유효성 검사 규칙을 따라야 합니다. 디폴트 값은 표현식일 수도 있습니다. 디폴트 값을 지정하면 해당 인수가 선택 사항이 됩니다. 선택적 인수는 함수 시그니처와defaultValuearguments블록에서 필수 인수 뒤에 위치해야 합니다.
이름-값 인수의 경우, 는 arg 형식을 사용합니다. 여기서 nv.name는 함수 시그니처의 구조체 이름이고 nv은 arguments 블록의 인수 이름입니다. 예를 들어, nameoptions라는 구조체를 사용하여 이름-값 인수를 받는 함수를 정의해 보겠습니다.
y = myFunction(x,options)
arguments 블록에 이름-값 인수의 이름을 필드로 지정합니다.
arguments
x
options.Name1
options.Name2
end 일반적으로 arguments 블록을 사용하는 방법에 대한 자세한 내용은 arguments 블록 구문 항목을 참조하십시오.
arguments (Repeating) ... end는 반복되는 입력 인수를 선언합니다.
예를 들어, 반복 인수 X, Y, style을 갖는 함수 myplot을 만들 경우, 이 함수는 myplot(x1,y1,style1,x2,y2,style2)와 같이 3개 인수의 여러 세트를 받습니다. MATLAB은 해당 인수에 대해 전달된 모든 값을 포함하는 셀형 배열을 만듭니다.
함수는 repeating input arguments 블록을 하나만 포함할 수 있습니다. 함수가 반복 인수와 이름-값 인수를 모두 포함할 경우, repeating arguments 블록 뒤에 이름-값 인수를 위한 별도의 블록으로 선언합니다.
반복 인수를 사용한 유효성 검사에 대한 자세한 내용은 반복되는 인수의 유효성 검사하기 항목을 참조하십시오.
출력 인수 블록
arguments (Output) ... end는 함수에 대한 출력 인수를 선언합니다. output arguments 블록은 선택 사항입니다. 하나 이상의 출력 arguments 블록을 포함할 경우 모든 입력 블록 뒤에 오되 함수의 첫 번째 실행 가능한 라인 앞에 와야 합니다. 함수에 입력 및 출력 블록을 모두 포함할 경우 가독성을 위해 명시적으로 (Input) 및 (Output) 특성을 포함하는 것이 좋습니다. 예제는 인수 유효성 검사를 포함한 반복되는 출력 항목을 참조하십시오.(R2022b 이후)
이 구문에서 볼 수 있듯이 출력 인수는 입력 인수와 마찬가지로 하나 이상의 제한 사항을 가질 수 있습니다.
argName (dimensions) class {validators}
자세한 내용은 arguments ... end에 대한 설명을 참조하십시오. 입력 인수와 달리 출력 인수는 디폴트 값을 정의할 수 없으며 출력 인수에 적용된 유효성 검사 함수는 이전 출력 인수를 참조할 수 없습니다.
arguments (Output,Repeating) ... end는 함수에 대해 반복되는 출력 인수를 선언합니다. 반복되는 출력 인수에 대한 인수 유효성 검사를 사용할 수 있지만 반복되는 출력 인수는 함수당 하나만 정의할 수 있습니다. 단일 출력 인수인 경우 varargout은 repeating output arguments 블록에 나타날 수 있습니다.(R2022b 이후)
예제
제한 사항
중첩 함수, 추상 메서드, 핸들 클래스 소멸자 메서드에서는 인수 블록이 지원되지 않습니다.
세부 정보
팁
데이터형 제한을 사용하면 입력 인수가 묵시적으로 변환될 수 있습니다. 예를 들면 다음과 같습니다.
이 함수의 경우, 문자열function y = myFunction(inputArg1) arguments inputArg1 (1,1) double end ..."123"을 입력 인수로 전달하면 MATLAB은 문자열을double형 숫자 값123으로 변환합니다.유효성 검사 함수는 어떠한 방식으로도 입력값을 변경하지 않으므로, 데이터형 변환을 피하려면 데이터형 대신 하나 이상의 유효성 검사 함수를 사용하여 입력값을 제한하십시오. 예를 들면 다음과 같습니다.
문자열이 숫자형 값으로 변환되지 않도록 하려면
mustBeA,mustBeFloat또는mustBeNumeric을 사용하십시오.숫자형 값이 문자열로 변환되지 않도록 하려면
mustBeText,mustBeTextScalar또는mustBeNonZeroLengthText를 사용하십시오.크기 변환을 방지하려면
mustBeVector또는mustBeScalarOrEmpty를 사용하십시오.
MATLAB은
arguments블록을 가진 함수에 대해 arguments 블록에 포함된 정보를 바탕으로 코드 완성 및 제안을 제공할 수 있습니다. 이 정보는functionSignatures.json파일이 없어도 사용할 수 있습니다. 코드 제안 및 완성의 사용자 지정에 대한 자세한 내용은 코드 제안 및 코드 완성 사용자 지정하기 항목을 참조하십시오.


