arguments
구문
argumentsargName1 (dimensions) class {validators} = defaultValue
...argNameN ...
end arguments (Repeating)argName1 (dimensions) class {validators} = defaultValue
...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 데이터형으로,class
double
과 같이 이름으로 지정됩니다. 입력값은 지정된 유형이거나 해당 유형으로 변환될 수 있는 유형이어야 합니다. 예를 들어,double
을 지정하는 함수는single
클래스의 값을 받아서double
형으로 변환합니다. 변환에 대한 자세한 내용은 Implicit Class Conversion 항목을 참조하십시오.
—{validators}
mustBeNumeric
,mustBeScalarOrEmpty
와 같은 유효성 검사 함수의 쉼표로 구분된 목록으로, 중괄호로 묶습니다. 유효성 검사 함수는 입력 인수가 조건과 일치하지 않는 경우 오류를 발생시킵니다.
와 달리 유효성 검사 함수는 입력 인수를 수정하지 않습니다. 유효성 검사 함수 목록은 인수 유효성 검사 함수 항목을 참조하십시오.class
— 디폴트 값은 지정된 크기, 유형 및 유효성 검사 규칙을 따라야 합니다. 디폴트 값은 표현식일 수도 있습니다. 디폴트 값을 지정하면 해당 인수가 선택 사항이 됩니다. 선택적 인수는 함수 시그니처와defaultValue
arguments
블록에서 필수 인수 뒤에 위치해야 합니다.
이름-값 인수의 경우,
는 arg
형식을 사용합니다. 여기서 nv.name
는 함수 시그니처의 구조체 이름이고 nv
은 arguments 블록의 인수 이름입니다. 예를 들어, name
options
라는 구조체를 사용하여 이름-값 인수를 받는 함수를 정의해 보겠습니다.
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
를 사용하십시오.