switch, case, otherwise

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

Синтаксис

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. Выход перегруженного eq функция должна быть логическим значением.

  • Для массива ячеек 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 операторы.

  • switch MATLAB оператор не проваливается как язык C switch оператор. Если первый 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 MATLAB оператор заканчивает выполнение for или while цикл, но не заканчивает выполнение switch оператор. Это поведение отличается, чем поведение break и switch в C.

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

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

| | |

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