Wikipedia descrive un'istruzione switch come «un tipo di meccanismo di controllo di selezione che permette al valore di una variabile o di un'espressione di modificare il flusso di controllo del programma».
Il meccanismo coinvolge le seguenti parole chiave: switch, case, break e default.
Nella loro forma più semplice, verificano un'espressione primitiva o una stringa e prendono una decisione in base al suo valore. Per esempio:
string direction = GetDirection();
switch (direction)
{
case "left":
GoLeft();
break;
case "right":
GoRight();
break;
default:
MarkTime();
break;
}
Nella loro forma più sofisticata, introducono il down casting case <Type> <variable>: e le guardie (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;
}
Stai sviluppando un sistema per aiutare lo staff del sito web di un club di calcio a fare report sulle partite. Questo sistema è in grado di analizzare diversi aspetti della partita, sia in campo che fuori, e li converte in un flusso di eventi.
La squadra gioca sempre con il modulo 4-3-3 e non ha mai accettato il cambiamento delle regole del 1965 che permette le sostituzioni, per non parlare delle rose più numerose.
Le descrizioni dei giocatori sono le seguenti:
1 -> "goalie"
2 -> "left back"
3 & 4 -> "center back"
5 -> "right back"
6, 7 & 8 -> "midfielder"
9 -> "left wing"
10 -> "striker"
11 -> "right wing"
Implementa il metodo statico PlayAnalyzer.AnalyzeOnField() per restituire la descrizione di un giocatore in base al suo numero di maglia.
PlayAnalyzer.AnalyzeOnField(10);
// => "striker"
Modifica il metodo PlayAnalyzer.AnalyzeOnField() per restituire UNKNOWN quando viene elaborato un numero di maglia fuori dall'intervallo 1-11.
Implementa il metodo PlayAnalyzer.AnalyzeOffField() per restituire descrizioni delle attività e dei personaggi intorno al campo di gioco.
Questo metodo riceve diversi tipi di dati che vanno analizzati e convertiti in un testo appropriato per aiutare i giornalisti.
Per iniziare, tratteremo i dati relativi allo stadio:
int)string)I tipi di dati sconosciuti non devono essere elaborati: se il metodo riceve dati di un tipo diverso, deve restituire una stringa vuota.
PlayAnalyzer.AnalyzeOffField(5000);
// => "There are 5000 supporters at the match."
PlayAnalyzer.AnalyzeOffField("5 minutes to go!");
// => "5 minutes to go!"
PlayAnalyzer.AnalyzeOffField(0.5);
// => ""
Modifica il metodo PlayAnalyzer.AnalyzeOffField() per restituire descrizioni degli episodi che accadono durante la partita.
Gli episodi possono essere qualsiasi sottoclasse del tipo Incident e contengono una descrizione dell'episodio.
Gli infortuni sono un tipo speciale di episodio, perché causano una sospensione della partita, e vanno quindi trattati in modo diverso.
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."
Modifica il metodo PlayAnalyzer.AnalyzeOffField() per menzionare gli allenatori dei club presenti durante la partita.
Gli allenatori sono istanze del tipo Manager e hanno un nome e il nome del club che allenano.
Il club dell'allenatore può essere sconosciuto, nel qual caso sarà impostato su null.
Se il club di un allenatore non è noto, non deve far parte della descrizione.
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)"
Iscriviti a Exercism per imparare e padroneggiare C# con 62 concetti178 esercizi e il mentoring di persone reali, tutto gratis.