Выполните одну из нескольких групп операторов
switchswitch_expression
casecase_expression
statements
casecase_expression
statements
... otherwisestatements
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.
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
в С.