switch, case, otherwise
Ejecutar uno de varios grupos de instrucciones
Sintaxis
switchswitch_expressioncasecase_expressionstatementscasecase_expressionstatements... otherwisestatementsend
Descripción
switch evalúa una expresión y elige ejecutar uno de varios grupos de instrucciones. Cada elección es un caso. switch_expression, case case_expression, end
El bloque switch prueba cada caso hasta que una de las expresiones de caso sea verdadera. Un caso es verdadero cuando:
Para los números,
.case_expression==switch_expressionPara los vectores de caracteres y las cadenas,
strcmp(. Los arreglos de celdas de vectores de caracteres son un caso especial en el quecase_expression,switch_expression) == 1casecoincidirá si al menos un elemento del arreglo de celdas coincide.Para los objetos compatibles con la función
eq,. La salida de la funcióncase_expression==switch_expressioneqsobrecargada debe ser un valor lógico o convertible a un valor lógico.Para un arreglo de celdas
case_expression, al menos uno de los elementos del arreglo de celdas coincide conswitch_expression, como se definió anteriormente para números, vectores de caracteres y objetos.
Cuando una expresión de caso es verdadera, MATLAB® ejecuta las instrucciones correspondientes y sale del bloque switch.
Una switch_expression evaluada debe ser un escalar o un vector de caracteres. Una case_expression evaluada debe ser un escalar, un vector de caracteres o un arreglo de celdas de escalares o vectores de caracteres.
El bloque otherwise es opcional. MATLAB ejecuta las instrucciones solo cuando ningún caso es verdadero.
Ejemplos
Sugerencias
Una
case_expressionno puede incluir operadores relacionales como<o>para la comparación conswitch_expression. Para comprobar la desigualdad, utilice las instruccionesif, elseif, else.La instrucción
switchde MATLAB no se pierde como una instrucciónswitchen lenguaje C. Si la primera instruccióncaseestrue, MATLAB no ejecuta las demás instruccionescase. Por ejemplo:result = 52; switch(result) case 52 disp('result is 52') case {52, 78} disp('result is 52 or 78') end
result is 52
Defina todas las variables necesarias para el código en un caso particular dentro de dicho caso. Como MATLAB ejecuta solo un caso de cualquier instrucción
switch, las variables definidas dentro de un caso no están disponibles para otros casos. Por ejemplo, si el área de trabajo actual no contiene una variablex, solo los casos que definenxpueden utilizarla:switch choice case 1 x = -pi:0.01:pi; case 2 % does not know anything about x end
La instrucción
breakde MATLAB termina la ejecución de un bucleforowhile, pero no finaliza la ejecución de una instrucciónswitch. Este comportamiento es diferente al debreakyswitchen C.
Capacidades ampliadas
Historial de versiones
Introducido antes de R2006a
