exponenta event banner

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

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

Синтаксис

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

Описание

пример

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

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

  • Для чисел, 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 должен быть скаляром, символьным вектором или массивом ячеек скаляров или символьных векторов.

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

Совет

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

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

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

.

См. также

| | |

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