switch
Wikipédia décrit une instruction switch comme « un type de mécanisme de contrôle de sélection qui permet à la valeur d'une variable ou d'une expression de modifier le déroulement du programme ».
Ce mécanisme fait intervenir les mots-clés suivants : switch, case, break et default.
Dans leur forme la plus simple, ils évaluent une expression primitive ou une string et prennent une décision en fonction de sa valeur. Par exemple :
string direction = GetDirection();
switch (direction)
{
case "left":
GoLeft();
break;
case "right":
GoRight();
break;
default:
MarkTime();
break;
}
Dans leur forme la plus élaborée, ils introduisent le downcast, avec la syntaxe case <Type> <variable>:, ainsi que les gardes (when).
Animal animal = GetAnimal();
switch (animal)
{
case Dog canine:
case Coyote canine:
canine.Bark();
break;
case Cat cat when cat.HasOnly8Lives():
cat.IsCareful();
cat.Meow();
break;
case Cat cat:
cat.Meow();
break;
}
Tu développes un système pour aider le personnel du site web d'un club de football à rendre compte des matchs. Ce système est capable d'analyser différents aspects du match, sur le terrain comme en dehors, et de les convertir en un flux d'événements.
L'équipe joue toujours en 4-3-3 et n'a jamais accepté le changement de règles de 1965 autorisant les remplacements, et encore moins des effectifs élargis.
Les descriptions des joueurs sont les suivantes :
1 -> "goalie"
2 -> "left back"
3 & 4 -> "center back"
5 -> "right back"
6, 7 & 8 -> "midfielder"
9 -> "left wing"
10 -> "striker"
11 -> "right wing"
Implémente la méthode statique PlayAnalyzer.AnalyzeOnField() pour produire une description de joueur à partir de son numéro de maillot.
PlayAnalyzer.AnalyzeOnField(10);
// => "striker"
Modifie la méthode PlayAnalyzer.AnalyzeOnField() pour renvoyer UNKNOWN quand un numéro de maillot en dehors de la plage 1-11 est traité.
Implémente la méthode PlayAnalyzer.AnalyzeOffField() pour produire des descriptions des activités et des personnages autour du terrain.
Cette méthode prend différents types de données qui doivent être analysées et converties en un texte approprié pour aider les journalistes.
Pour commencer, on va traiter les données concernant le stade :
int)string)Les types de données inconnus ne doivent pas être traités ; si la méthode reçoit des données d'un autre type, elle doit renvoyer une string vide.
PlayAnalyzer.AnalyzeOffField(5000);
// => "There are 5000 supporters at the match."
PlayAnalyzer.AnalyzeOffField("5 minutes to go!");
// => "5 minutes to go!"
PlayAnalyzer.AnalyzeOffField(0.5);
// => ""
Modifie la méthode PlayAnalyzer.AnalyzeOffField() pour produire des descriptions des incidents qui se produisent pendant le match.
Les incidents peuvent être n'importe quelle sous-classe du type Incident et contiennent une description de l'incident.
Les blessures sont un type particulier d'incident, car elles interrompent le match et doivent donc être traitées différemment.
PlayAnalyzer.AnalyzeOffField(new Foul());
// => "The referee deemed a foul."
PlayAnalyzer.AnalyzeOffField(new Injury(8));
// => "Oh no! Player 8 is injured. Medics are on the field."
Modifie la méthode PlayAnalyzer.AnalyzeOffField() pour mentionner les entraîneurs présents pendant le match.
Les entraîneurs sont des instances du type Manager et ont un nom ainsi que le nom du club qu'ils entraînent.
Le club d'un entraîneur peut être inconnu, auquel cas sa valeur est null.
Si le club d'un entraîneur n'est pas connu, il ne doit pas faire partie de la description.
PlayAnalyzer.AnalyzeOffField(new Manager("José Mário dos Santos Mourinho Félix", null));
// => "José Mário dos Santos Mourinho Félix"
PlayAnalyzer.AnalyzeOffField(new Manager("Jürgen Klopp", "Liverpool"));
// => "Jürgen Klopp (Liverpool)"
Inscris-toi sur Exercism pour apprendre et maîtriser C# avec 62 concepts178 exercices, et un vrai mentorat humain, le tout gratuitement.