Main Content

parse

함수 입력값 구문 분석

설명

예제

parse(p,argList)arglist에 있는 입력값을 구문 분석하고 유효성을 검사합니다.

예제

모두 축소

필수 입력값이 음수가 아닌 숫자형 스칼라인지 확인하는 입력값 구문 분석기 체계를 만듭니다. 구문 @(x)는 입력값이 하나인 익명 함수의 핸들을 만듭니다.

p = inputParser;
argName = 'num';
validationFcn = @(x) (x > 0) && isnumeric(x) && isscalar(x);
addRequired(p,argName,validationFcn)

-1과 같이 유효하지 않은 입력값에 대해 구문 분석합니다.

parse(p,-1)
The value of 'num' is invalid. It must satisfy the function: @(x)(x>0)&&isnumeric(x)&&isscalar(x).

필수 함수 입력값과 선택적 함수 입력값을 구문 분석하고 유효성 검사를 합니다.

findArea.m 파일에 함수를 만듭니다. findArea 함수는 width 입력 인수를 필요로 하고 가변적인 개수의 추가 입력값을 허용합니다. 입력값 구문 분석기 체계는 다음 인수 조건을 지정합니다.

  • width (필수 인수). 필수 인수가 위치 입력값이므로, widthfindArea 함수의 첫 번째 인수여야 합니다. 입력값 구문 분석기는 width가 양의 스칼라 숫자형인지 확인합니다.

  • height(선택적 인수). 선택적 인수가 위치 인수이므로 heightfindArea 함수의 인수이면 이 인수는 두 번째 인수여야 합니다. 입력값 구문 분석기는 height가 양의 스칼라이고 숫자형인지 확인합니다.

  • 'units'와 이 인수와 연결된 값(이름-값 쌍). 이름-값 쌍은 선택 사항입니다. findArea 함수를 호출할 때 위치 인수 뒤에 이름-값 쌍을 순서에 상관없이 지정하십시오. 입력값 구문 분석기는 'units'에 대한 값이 string형인지 확인합니다.

  • 'shape'와 이 인수와 연결된 값(다른 이름-값 쌍). 입력값 구문 분석기는 'shape'에 대한 값이 expectedShapes 배열에 포함되어 있는지 확인합니다.

function a = findArea(width,varargin)
   defaultHeight = 1;
   defaultUnits = 'inches';
   defaultShape = 'rectangle';
   expectedShapes = {'square','rectangle','parallelogram'};

   p = inputParser;
   validScalarPosNum = @(x) isnumeric(x) && isscalar(x) && (x > 0);
   addRequired(p,'width',validScalarPosNum);
   addOptional(p,'height',defaultHeight,validScalarPosNum);
   addParameter(p,'units',defaultUnits,@isstring);
   addParameter(p,'shape',defaultShape,...
                 @(x) any(validatestring(x,expectedShapes)));
   parse(p,width,varargin{:});
   
   a = p.Results.width*p.Results.height; 
end

findArea 함수를 여러 번 호출합니다. 입력값 구문 분석기는 이러한 함수 호출에 대해 오류를 생성하지 않습니다.

a = findArea(7);
a = findArea(7,3);
a = findArea(13,'shape','square');
a = findArea(13,'units',"miles",'shape','square');

입력값 구문 분석기 체계와 일치하지 않는 인수를 포함한 함수를 호출합니다. width 입력값으로 숫자가 아닌 값을 지정합니다.

a = findArea('text')
Error using findArea (line 14)
The value of 'width' is invalid. It must satisfy the function: @(x)isnumeric(x)&&isscalar(x)&&(x>0).

'shape'에 지원하지 않는 값을 지정합니다.

a = findArea(4,12,'shape','circle')
Error using findArea (line 14)
The value of 'shape' is invalid. Expected input to match one of these values:

'square', 'rectangle', 'parallelogram'

The input, 'circle', did not match any of the valid values.

입력 인수

모두 축소

입력값 구문 분석기 체계로, inputParser 객체로 지정됩니다.

구문 분석하고 유효성을 검사할 입력값으로, 쉼표로 구분된 목록(csv)으로 지정됩니다. argList의 요소는 임의의 데이터형일 수 있습니다. 인수를 입력값 구문 분석기 체계에 추가하면 입력값 구문 분석기는 지정한 유효성 검사 함수를 사용하여 인수의 유효성을 판별합니다.

예: 'textA',13,mtxB

예: varargin{:}

확장 기능

스레드 기반 환경
MATLAB®의 backgroundPool을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool을 사용해 코드 실행 속도를 높일 수 있습니다.

버전 내역

R2007a에 개발됨