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.