Selon que / switch
Pseudo-langage
SELON QUE expression_a_tester VAUT
valeur1 : instructions1
valeur2, valeur3 : instructions23
valeur4 : instructions4
...
AUTRE : instructionsA
FIN SELON QUE
Java
switch ( expression_a_tester ) {
case valeur1 : instructions1; break;
case valeur2 :
case valeur3 : instructions23; break;
case valeur4 : instructions4; break;
...
default : instructionsA;
} // switch
équivalent à :
if ( expression_a_tester == valeur1 ) {
instructions1;
}
else if ( expression_a_tester == valeur2 || expression_a_tester == valeur3 ) {
instructions23;
}
else if ( expression_a_tester == valeur4 ) {
instructions4;
}
else {
instructionsA;
}
Commentaires
- L'expression_a_tester doit donner un résultat de type entier ou caractère,
ou type énuméré (depuis Java5) ou String (depuis Java7).
- Les valeurs doivent être constantes et du même type que l'expression_a_tester.
- Les case représentent un point d'entrée en fonction de la valeur
de l'expression_a_tester, mais toutes les instructions suivantes du switch sont
exécutées sauf s'il y a un break qui provoque la sortie du switch.
- C'est ce qui permet de regrouper plusieurs cas sans avoir à répéter les instructions.
- Si au lieu de vouloir simplement sortir du switch, on souhaite sortir complètement de la méthode,
il suffit de remplacer les break par des return.
- Outre qu'elle est moins élégante, la forme équivalente est moins performante
puisqu'elle évalue potentiellement 4 fois l'expression_a_tester !