Section 4.4

Switch case

Une valeur, des cas, un default — et ce sur quoi il fonctionne.

Une chaîne de if/else if devient vite illisible quand on teste la même valeur contre dix possibilités. switch la remplace.

@entry(demarrer)
object MonProgramme {
    demarrer() {
        var jour := 2;

        switch (jour) {
            case 1:
                Console.print(text: "lundi");
                break;
            case 2:
                Console.print(text: "mardi");
                break;
            default:
                Console.print(text: "un autre jour");
        }
    }
}

Une valeur, des cas, une porte de sortie

switch (jour) évalue la valeur une fois, puis cherche le case qui lui correspond. Trouvé, il exécute ce qui suit. Aucun ne correspond, il prend le default.

Le break ferme le cas : il fait en sorte que les cas suivants ne soient pas exécutés.

Le default n’est pas obligatoire, mais son absence a une conséquence : une valeur qu’aucun case ne prévoit ne fait alors rien du tout, en silence. L’écrire, ne serait-ce que pour signaler l’inattendu, coûte deux lignes.

Sur quoi il fonctionne

Les entiers et les textes, rien d’autre. Un switch sur un texte compare les contenus, comme le = de la section 3 :

switch (nom) {
    case "simon":
        Console.print(text: "connu");
        break;
    default:
        Console.print(text: "inconnu");
}

Il n’y a pas de switch sur un objet. Un branchement là-dessus s’écrit avec des if.

À vous

  • Donnez à jour une valeur qu’aucun case ne prévoit : le default répond.
  • Retirez le break de case 1: et mettez jour à 1 : deux lignes s’affichent.
  • Retirez le default et donnez une valeur imprévue : le programme n’affiche rien, et ne s’en plaint pas. C’est exactement le silence qu’un default évite.
  • Réécrivez le même choix en if/else if et comparez les deux à la lecture.