переключатель, случай, в противном случае

Выполните одну из нескольких групп операторов

Синтаксис

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

Описание

пример

switch switch_expression, case case_expression, end оценивает выражение и принимает решение выполнить одну из нескольких групп операторов. Каждым выбором является случай.

Стендовые испытания двигателя switch каждый случай до одного из case-выражений верны. Случай верен когда:

  • Для чисел, case_expression == switch_expression.

  • Для векторов символов, strcmp(case_expression,switch_expression) == 1.

  • Для объектов, которые поддерживают функцию eq, case_expression == switch_expression.

  • Для массива ячеек case_expression по крайней мере один из элементов массива ячеек совпадает с switch_expression, как задано выше для чисел, векторов символов и объектов.

Когда case-выражение верно, MATLAB® выполняет соответствующие операторы и выходит из блока switch.

Оцененный switch_expression должен быть скаляром или вектором символа. Оцененный case_expression должен быть скаляром, вектором символа или массивом ячеек скаляров или векторов символов.

Блок otherwise является дополнительным. MATLAB выполняет операторы только, когда никакой случай не верен.

Примеры

свернуть все

Отобразите различный текст условно, в зависимости от значения, вводимого в командную строку.

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-D круговую диаграмму. Используйте массив ячеек, чтобы содержать оба значения.

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_expression не может включать операторы отношения, такие как < или > для сравнения с switch_expression. Чтобы протестировать на неравенство, используйте операторы if, elseif, else.

  • Оператор MATLAB switch не проваливается как оператор switch языка C. Если первым оператором 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
  • Задайте все переменные, необходимые для кода в особом случае в том случае. Поскольку MATLAB выполняет только один случай любого оператора switch, переменные, заданные в одном случае, не доступны для других случаев. Например, если ваша текущая рабочая область не содержит переменный x, только случаи, которые задают x, могут использовать его:

    switch choice
       case 1
          x = -pi:0.01:pi;
       case 2
          % does not know anything about x
    end
  • Не используйте оператор break в блоке switch. break не задан вне цикла while или for.

Расширенные возможности

Смотрите также

| | |

Представлено до R2006a

Была ли эта тема полезной?