Euphoria - Déclarations Switch

le switchinstruction est utilisée pour exécuter un ensemble spécifique d'instructions, en fonction de la valeur d'une expression. Il remplace souvent un ensemble deif…elsif des déclarations vous donnant plus de contrôle et de lisibilité de votre programme

Syntaxe

La syntaxe de l'instruction switch simple est la suivante -

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

Le <val> dans un cas doit être un atome, une chaîne littérale, une constante ou une énumération. Plusieurs valeurs pour une seule observation peuvent être spécifiées en séparant les valeurs par des virgules. Par défaut, le contrôle passe à la fin du bloc de commutation lorsque le cas suivant est rencontré.

Exemple

#!/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

Cela produit le résultat suivant -

Well done!

Le commutateur ... avec Fallthru Statement

le case déclaration d'un switchest exécuté lorsqu'il correspond à la valeur d'expression donnée et par défaut il sort. Par défaut, le contrôle passe à la fin du bloc de commutation lorsque le cas suivant est rencontré.

La valeur par défaut pour un bloc de commutation particulier peut être modifiée afin que le contrôle passe à l'instruction exécutable suivante chaque fois qu'un nouveau cas est rencontré en utilisant with fallthru dans l'instruction switch -

Syntaxe

La syntaxe du commutateur simple ... avec instruction fallthru est la suivante -

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

Exemple

#!/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

Cela produit le résultat suivant -

Well done!
You passed!
Better try again!
Invalid grade!

Vous pouvez utiliser en option break instruction pour sortir d'un point à l'intérieur d'une instruction switch comme suit -

#!/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

Cela produit le résultat suivant -

Well done!

Le commutateur .... déclaration d' étiquette

le switch l'instruction peut avoir une option labelpour nommer le bloc de commutation. Ce nom peut être utilisé dans des instructions d'interruption de commutateur imbriquées pour sortir d'un commutateur englobant plutôt que simplement du commutateur propriétaire.

Une étiquette de commutateur est utilisée uniquement pour nommer le bloc et les noms d'étiquette doivent être des chaînes constantes entre guillemets doubles comportant des mots simples ou multiples. Le mot-clé label est sensible à la casse et doit être écrit commelabel.

Syntaxe

La syntaxe de l' instruction switch simple ... label est la suivante -

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

Exemple

#!/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

Cela produit le résultat suivant -

Well done!
Lower scale!

Note- Si vous n'utilisez pas d'instruction with fallthru , vous n'avez pas besoin d'utiliser d'étiquette car l'instruction switch sortira automatiquement.