switch, case, otherwise
执行多组语句中的一组
语法
switchswitch_expression
casecase_expression
statements
casecase_expression
statements
... otherwisestatements
end
说明
switch
计算表达式并选择执行多组语句中的一组。每个选项为一个 case。 switch_expression
, case case_expression
, end
switch
块会测试每个 case,直至一个 case 表达式为 true。case 在以下情况下为 true:
对于数字,
。case_expression
==switch_expression
对于字符向量,
strcmp(
。case_expression
,switch_expression
) == 1对于支持
eq
函数的对象,
。重载的case_expression
==switch_expression
eq
函数的输出必须为逻辑值或可转换为逻辑值。对于元胞数组
case_expression
,元胞数组的至少一个元素与switch_expression
匹配,如上述对数字、字符向量和对象的定义。
当 case 表达式为 true 时,MATLAB® 执行对应的语句,然后退出 switch
块。
计算的 switch_expression
必须为标量或字符向量。计算的 case_expression
必须为标量、字符向量或者标量或字符向量的元胞数组。
otherwise
块是可选的。仅当没有 case 为 true 时,MATLAB 才会执行这些语句。
示例
提示
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
在该 case 内定义特定 case 中的代码所需要的变量。由于 MATLAB 仅执行任何
switch
语句的一个 case,因此一个 case 内定义的变量不适用于其他 case。例如,如果当前工作区不包含变量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
语句的执行。此行为不同于 C 语言中break
和switch
的行为。
扩展功能
版本历史记录
在 R2006a 之前推出