Выполните одну из нескольких групп операторов
switchswitch_expression
casecase_expression
statements
casecase_expression
statements
... otherwisestatements
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 выполняет операторы только, когда никакой случай не верен.
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
Оператор MATLAB break
заканчивает выполнение for
или цикла while
, но не заканчивает выполнение оператора switch
. Это поведение отличается, чем поведение break
и switch
в C.