Un peu comme les instructions if, qui donnent à votre programme la capacité de prendre des décisions, les instructions switch peuvent être utilisées pour insuffler un peu d’intelligence dans n’importe quel programme. En fait, une instruction switch est essentiellement une version spécialisée d’une instruction if qui aurait autrement une quantité excessive d’instructions de type ELSE IF
.
Regardons pourquoi ils sont utilisés.
Parfois, en insufflant de la logique dans vos programmes, vous rencontrerez une situation où, étant donné la valeur d’une certaine donnée, vous voudrez faire quelque chose de différent. Normalement, cela pourrait être couvert par une instruction if, mais que faire si vous voulez tenir compte de 5, 10 , voire 20 situations possibles ?
En utilisant une instruction if, votre programme deviendrait rapidement un fouillis de syntaxe d’instruction if, et il ne serait pas très lisible ou clair ce qui se passe. Les programmeurs s’en sont rendu compte et c’est ainsi que les instructions Switch sont nées !
Structure des instructions Switch
Une instruction Switch prend une seule valeur, puis la compare à un tas d’autres valeurs en utilisant une expression booléenne. Lorsqu’une de ces expressions booléennes est vraie, alors un morceau de code spécifique s’exécute.
Cette structure vous permet de mapper facilement une valeur à un morceau de code qui doit être exécuté. Jetez un coup d’œil à une simple instruction switch ci-dessous pour vous familiariser avec la syntaxe en Ruby :
Copymy_grade = "A "case my_grade when "A" puts "You Pass" when "F" puts "You fail" else puts "Invalid grade "end
Comme vous pouvez le voir ci-dessus, nous commençons par une valeur myGrade
. Essentiellement, nous voulons imprimer si l’étudiant a réussi ou échoué étant donné sa note (A ou F).
Maintenant que nous avons notre valeur, nous voulons mettre en place une série d’instructions de cas. Ces déclarations de cas sont essentiellement le côté droit d’une expression booléenne pour l’égalité. Ruby va comparer myGrade
à chacune des valeurs dans les déclarations de cas (‘A’ et ‘F’) pour l’égalité. S’il y a une correspondance, alors le code directement sous l’instruction case sera exécuté.
Ruptures
Une chose qu’il est important de garder à l’esprit avec les instructions switch est que, par défaut, Ruby essaiera de vérifier l’égalité de toutes ces instructions, même si elle obtient une correspondance. Ceci est différent d’une structure ELSE IF
où une fois qu’une condition est vraie, elle arrête de vérifier celles qui sont en dessous.
Parce que Ruby vérifiera automatiquement chaque cas quoi qu’il arrive, nous avons besoin d’un moyen d’empêcher cela (la plupart du temps, vous voulez empêcher cela). Dans le cas d’une correspondance, je veux que l’instruction switch cesse de vérifier les autres cas.
C’est là qu’intervient le mot-clé break
. Le mot-clé break indique à Ruby que nous en avons terminé avec l’instruction switch, et qu’il doit s’en détacher et passer à autre chose.
Personnellement, j’ai rencontré ma juste part de bugs dans les programmes que j’ai écrits pour avoir oublié de mettre des instructions break. Gardez donc cela dans un coin de votre tête.
Défaut
Si vous examinez l’instruction switch ci-dessus, vous remarquerez également le mot-clé default
. Ce mot-clé agit beaucoup comme un ELSE
dans une structure d’instruction if. Tout code situé sous l’instruction if sera exécuté si aucun des autres cas n’obtient de correspondance. Remarquez également que nous n’avons pas besoin d’une instruction break à l’intérieur de l’instruction default.
Généralement, lorsque vous avez une situation où vous utilisez un switch, le default va juste attraper toutes les situations que vous ne voulez pas spécifier dans une déclaration case.
Dans le cas du programme ci-dessus, il imprime Invalid Grade
pour toute note qui n’est pas une A
ou une F
.
Envelopper le tout
Dans la pratique, les instructions switch sont utilisées beaucoup moins fréquemment que les instructions if. La raison en est qu’il y a beaucoup moins de situations où une instruction switch est appropriée par rapport à une instruction if. Une bonne règle de base cependant est que si vous devez vérifier l’égalité d’une valeur par rapport à un tas d’autres valeurs, alors vous pourriez avoir besoin d’un switch !
.