Euphoria - Declaraciones Switch
los switchdeclaración se utiliza para ejecutar un conjunto específico de declaraciones, dependiendo del valor de una expresión. A menudo reemplaza un conjunto deif…elsif declaraciones que le dan más control y legibilidad de su programa
Sintaxis
La sintaxis de la instrucción switch simple es la siguiente:
switch expression do
case <val> [, <val-1>....] then
-- Executes when the expression matches one of the values
case <val> [, <val-1>....] then
-- Executes when the expression matches one of the values
.....................
case else
-- Executes when the expression does not matches any case.
end if
El <val> en un caso debe ser un átomo, una cadena literal, una constante o una enumeración. Se pueden especificar varios valores para un solo caso separando los valores con comas. De forma predeterminada, el control fluye al final del bloque de interruptores cuando se encuentra el siguiente caso.
Ejemplo
#!/home/euphoria-4.0b2/bin/eui
atom marks = 'C'
switch marks do
case 'A' then
puts(1, "Excellent!\n" )
case 'B', 'C' then
puts(1, "Well done!\n" )
case 'D' then
puts(1, "You passed!\n" )
case 'F' then
puts(1, "Better try again!\n" )
case else
puts(1, "Invalid grade!\n" )
end switch
Esto produce el siguiente resultado:
Well done!
El cambio ... con Fallthru Statement
los case declaración de un switchse ejecuta cuando coincide con el valor de expresión dado y sale por defecto. De forma predeterminada, el control fluye al final del bloque de interruptores cuando se encuentra el siguiente caso.
El valor predeterminado para un bloque de interruptores en particular se puede cambiar para que el control pase a la siguiente instrucción ejecutable cada vez que se encuentre un nuevo caso utilizando with fallthru en la declaración de cambio -
Sintaxis
La sintaxis de simple switch ... with fallthru statement es la siguiente:
switch expression with fallthru do
case <val> [, <val-1>....] then
-- Executes when the expression matches one of the values
break -- optional to come out of the switch from this point.
case <val> [, <val-1>....] then
-- Executes when the expression matches one of the values
break -- Optional to come out of the switch from this point.
.....................
case else
-- Executes when the expression does not matches any case.
break -- Optional to come out of the switch from this point.
end if
Ejemplo
#!/home/euphoria-4.0b2/bin/eui
atom marks = 'C'
switch marks with fallthru do
case 'A' then
puts(1, "Excellent!\n" )
case 'B', 'C' then
puts(1, "Well done!\n" )
case 'D' then
puts(1, "You passed!\n" )
case 'F' then
puts(1, "Better try again!\n" )
case else
puts(1, "Invalid grade!\n" )
end switch
Esto produce el siguiente resultado:
Well done!
You passed!
Better try again!
Invalid grade!
Puede utilizar opcional break declaración para salir de un punto dentro de una declaración de cambio de la siguiente manera:
#!/home/euphoria-4.0b2/bin/eui
atom marks = 'C'
switch marks with fallthru do
case 'A' then
puts(1, "Excellent!\n" )
break
case 'B', 'C' then
puts(1, "Well done!\n" )
break
case 'D' then
puts(1, "You passed!\n" )
break
case 'F' then
puts(1, "Better try again!\n" )
break
case else
puts(1, "Invalid grade!\n" )
break
end switch
Esto produce el siguiente resultado:
Well done!
El interruptor ... etiqueta Declaración
los switch declaración puede tener un opcional labelpara nombrar el bloque de interruptores. Este nombre se puede utilizar en declaraciones de interrupción de conmutador anidadas para romper un conmutador envolvente en lugar de solo el conmutador propietario.
Una etiqueta de interruptor se usa solo para nombrar el bloque y los nombres de etiqueta deben ser cadenas constantes entre comillas dobles que tengan una o varias palabras. La palabra clave de la etiqueta distingue entre mayúsculas y minúsculas y debe escribirse comolabel.
Sintaxis
La sintaxis de la declaración simple switch ... label es la siguiente:
switch expression label "Label Name" do
case <val> [, <val-1>....] then
-- Executes when the expression matches one of the values
break "LEBEL NAME"
case <val> [, <val-1>....] then
-- Executes when the expression matches one of the values
break "LEBEL NAME"
.....................
case else
-- Executes when the expression does not matches any case.
break "LEBEL NAME"
end if
Ejemplo
#!/home/euphoria-4.0b2/bin/eui
atom marks = 'C'
atom scale = 'L'
switch marks label "MARKS" do
case 'A' then
puts(1, "Excellent!\n" )
case 'B', 'C' then
puts(1, "Well done!\n" )
switch scale label "SCALE" do
case 'U' then
puts(1, "Upper scale!\n" )
break "MARKS"
case 'L' then
puts(1, "Lower scale!\n" )
break "MARKS"
case else
puts(1, "Invalid scale!\n" )
break "MARKS"
end switch
case 'D' then
puts(1, "You passed!\n" )
case 'F' then
puts(1, "Better try again!\n" )
case else
puts(1, "Invalid grade!\n" )
end switch
Esto produce el siguiente resultado:
Well done!
Lower scale!
Note- Si no está usando una declaración with fallthru , no necesita usar una etiqueta porque la declaración switch saldría automáticamente.