Main Content

switch, case, otherwise

여러 개의 명령문 그룹 중 하나 실행

구문

switch switch_expression
   case case_expression
      statements
   case case_expression
      statements
    ...
   otherwise
      statements
end

설명

예제

switch switch_expression, case case_expression, end는 표현식을 실행하고 여러 명령문 그룹 중 하나를 실행하도록 선택합니다. 각각의 선택이 하나의 case가 됩니다.

switch 블록은 case 표현식 중 하나가 true가 될 때까지 각 case를 테스트합니다. 다음에 해당하는 경우 case는 true가 됩니다.

  • 숫자의 경우 case_expression == switch_expression.

  • 문자형 벡터의 경우 strcmp(case_expression,switch_expression) == 1.

  • eq 함수를 지원하는 객체의 경우 case_expression == switch_expression입니다. 오버로드된 eq 함수의 출력값은 논리값이거나 논리값으로 변환될 수 있어야 합니다.

  • 셀형 배열 case_expression의 경우 셀형 배열의 요소 중 하나 이상이 숫자, 문자형 벡터, 객체에 대해 위에 정의된 대로 switch_expression과 일치할 때.

case 표현식이 true이면 MATLAB®은 해당하는 명령문을 실행하고 switch 블록을 종료합니다.

switch_expression은 스칼라나 문자형 벡터로 평가될 수 있어야 합니다. case_expression은 스칼라, 문자형 벡터, 또는 스칼라나 문자형 벡터로 구성된 셀형 배열로 평가될 수 있어야 합니다.

otherwise 블록은 선택 사항입니다. MATLAB은 어떤 case도 true가 아닌 경우에만 이 명령문을 실행합니다.

예제

모두 축소

명령 프롬프트에 입력한 값에 따라 조건부로 다른 텍스트를 표시합니다.

n = input('Enter a number: ');

switch n
    case -1
        disp('negative one')
    case 0
        disp('zero')
    case 1
        disp('positive one')
    otherwise
        disp('other value')
end

명령 프롬프트에 숫자 1을 입력합니다.

positive one

코드를 반복하고 숫자 3을 입력합니다.

other value

plottype의 값에 따라 어떤 유형의 플롯을 만들지 결정합니다. plottype'pie''pie3'이면 3차원 원형 차트를 만듭니다. 셀형 배열을 사용하여 두 값을 모두 포함합니다.

x = [12 64 24];
plottype = 'pie3';

switch plottype
    case 'bar' 
        bar(x)
        title('Bar Graph')
    case {'pie','pie3'}
        pie3(x)
        title('Pie Chart')
    otherwise
        warning('Unexpected plot type. No plot created.')
end

  • case_expressionswitch_expression과의 비교에 < 또는 > 같은 관계 연산자를 포함할 수 없습니다. 부등식 테스트를 수행하려면 if, elseif, else 문을 사용하십시오.

  • MATLAB switch 문은 C 언어의 switch 문처럼 다음 case로 넘어가지(fall through) 않습니다. 첫 번째 case 문이 true인 경우, MATLAB은 다른 case 문을 실행하지 않습니다. 예를 들면 다음과 같습니다.

    result = 52;
    
    switch(result)
       case 52
          disp('result is 52')
       case {52, 78}
          disp('result is 52 or 78')
    end
    result is 52
  • 특정 case의 코드에 필요한 모든 변수를 해당 case 내에 정의하십시오. MATLAB은 switch 문에 대해 case를 하나만 실행하므로, 하나의 case 내에 정의된 변수는 다른 case에 사용할 수 없습니다. 예를 들어, 현재 작업 공간에 변수 x가 포함되지 않은 경우, 다음과 같이 x를 정의하는 case만 이 변수를 사용할 수 있습니다.

    switch choice
       case 1
          x = -pi:0.01:pi;
       case 2
          % does not know anything about x
    end
  • MATLAB break 문은 for 또는 while 루프의 실행을 종료하지만 switch 문의 실행은 종료하지 않습니다. 이 동작은 C의 breakswitch의 동작과 다릅니다.

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| | |