switch, case, otherwise

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

Синтаксис

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

Описание

пример

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

The switch блокируйте проверку каждого случая до тех пор, пока одно из выражений случая не будет true. Случай верен, когда:

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

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

  • Для объектов, которые поддерживают eq функция, case_expression == switch_expression. Выход перегруженного eq функция должна быть либо логическим значением, либо преобразовываться в логическое значение.

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

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

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

The otherwise блок опциональен. MATLAB выполняет операторы только тогда, когда ни один случай не равен 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-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

Совет

  • A case_expression не может включать реляционные операторы, такие как < или > для сравнения с switch_expression. Чтобы проверить на неравенство, используйте if, elseif, else операторы.

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

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

.

См. также

| | |

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