Выполнение одной из нескольких групп операторов
switchswitch_expressioncasecase_expressionstatementscasecase_expressionstatements... otherwisestatementsend
switch вычисляет выражение и выбирает выполнение одной из нескольких групп операторов. Каждый выбор - это случай. switch_expression, case case_expression, end
switch блок проверяет каждый случай до тех пор, пока одно из выражений вариантов не станет истинным. Случай верен, когда:
Для чисел, .case_expression == switch_expression
Для символьных векторов: strcmp(.case_expression,switch_expression) == 1
Для объектов, поддерживающих eq функция, . Выходные данные перегруженного case_expression == switch_expressioneq функция должна быть либо логическим значением, либо преобразовываться в логическое значение.
Для массива ячеек case_expression, по меньшей мере, один из элементов массива ячеек соответствует switch_expression, как определено выше для чисел, символьных векторов и объектов.
Если выражение регистра имеет значение true, MATLAB ® выполняет соответствующие инструкции и выходит из switch блок.
Оцененный switch_expression должен быть скалярным или символьным вектором. Оцененный case_expression должен быть скаляром, символьным вектором или массивом ячеек скаляров или символьных векторов.
otherwise блок является необязательным. MATLAB выполняет инструкции только в том случае, если ни один из вариантов не соответствует действительности.
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 в С.