Euforia - Cambia dichiarazioni
Il switchL'istruzione viene utilizzata per eseguire un insieme specifico di istruzioni, a seconda del valore di un'espressione. Spesso sostituisce una serie diif…elsif dichiarazioni che ti danno più controllo e leggibilità del tuo programma
Sintassi
La sintassi dell'istruzione switch semplice è la seguente:
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
Il <val> in un caso deve essere un atomo, una stringa letterale, una costante o un enum. È possibile specificare più valori per un singolo caso separando i valori con virgole. Per impostazione predefinita, il controllo scorre alla fine del blocco interruttore quando si incontra il caso successivo.
Esempio
#!/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
Questo produce il seguente risultato:
Well done!
Il passaggio ... con la dichiarazione fallthru
Il case dichiarazione di a switchviene eseguito quando corrisponde al valore dell'espressione dato e per impostazione predefinita viene visualizzato. Per impostazione predefinita, il controllo scorre alla fine del blocco interruttore quando si incontra il caso successivo.
L'impostazione predefinita per un particolare blocco di interruttori può essere modificata in modo che il controllo passi all'istruzione eseguibile successiva ogni volta che si incontra un nuovo caso utilizzando with fallthru nell'istruzione switch -
Sintassi
La sintassi di simple switch ... con l' istruzione fallthru è la seguente:
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
Esempio
#!/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
Questo produce il seguente risultato:
Well done!
You passed!
Better try again!
Invalid grade!
Puoi usare opzionale break dichiarazione di uscire da un punto all'interno di un'istruzione switch come segue -
#!/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
Questo produce il seguente risultato:
Well done!
Lo switch .... label Statement
Il switch l'istruzione può avere un optional labelper denominare il blocco interruttore. Questo nome può essere utilizzato nelle istruzioni switch break nidificate per uscire da uno switch che lo racchiude anziché solo dallo switch proprietario.
Un'etichetta switch viene utilizzata solo per denominare il blocco ei nomi delle etichette devono essere stringhe costanti tra virgolette doppie con parole singole o multiple. La parola chiave label distingue tra maiuscole e minuscole e deve essere scritta comelabel.
Sintassi
La sintassi dell'istruzione semplice switch ... label è la seguente:
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
Esempio
#!/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
Questo produce il seguente risultato:
Well done!
Lower scale!
Note- Se non si utilizza un'istruzione with fallthru , non è necessario utilizzare un'etichetta perché l'istruzione switch verrà visualizzata automaticamente.