switch
Η Wikipedia περιγράφει την εντολή switch ως "έναν τύπο μηχανισμού ελέγχου επιλογής που επιτρέπει στην τιμή μιας μεταβλητής ή μιας έκφρασης να αλλάξει τη ροή ελέγχου του προγράμματος".
Ο μηχανισμός περιλαμβάνει τις εξής λέξεις-κλειδιά: switch, case, break και default.
Στην πιο απλή τους μορφή, ελέγχουν μια έκφραση πρωτογενούς τύπου ή συμβολοσειράς και παίρνουν μια απόφαση με βάση την τιμή της. Για παράδειγμα:
string direction = GetDirection();
switch (direction)
{
case "left":
GoLeft();
break;
case "right":
GoRight();
break;
default:
MarkTime();
break;
}
Στην πιο εξελιγμένη τους μορφή, εισάγουν το downcasting case <Type> <variable>: και τους φρουρούς (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;
}
Αναπτύσσεις ένα σύστημα για να βοηθήσεις το προσωπικό της ιστοσελίδας ενός ποδοσφαιρικού συλλόγου να κάνει ρεπορτάζ για τους αγώνες. Αυτό το σύστημα μπορεί να αναλύει διάφορες πτυχές του αγώνα, εντός και εκτός γηπέδου, και τις μετατρέπει σε μια ροή γεγονότων.
Η ομάδα παίζει πάντα με διάταξη 4-3-3 και δεν συμφώνησε ποτέ με την αλλαγή των κανόνων του 1965 που επέτρεπε αλλαγές παικτών, πόσο μάλλον με τις διευρυμένες ομάδες.
Οι περιγραφές των παικτών είναι οι εξής:
1 -> "goalie"
2 -> "left back"
3 & 4 -> "center back"
5 -> "right back"
6, 7 & 8 -> "midfielder"
9 -> "left wing"
10 -> "striker"
11 -> "right wing"
Υλοποίησε τη στατική μέθοδο PlayAnalyzer.AnalyzeOnField() ώστε να εμφανίζει μια περιγραφή παίκτη με βάση τον αριθμό της φανέλας του.
PlayAnalyzer.AnalyzeOnField(10);
// => "striker"
Τροποποίησε τη μέθοδο PlayAnalyzer.AnalyzeOnField() ώστε να αναφέρει UNKNOWN όταν επεξεργάζεται ένας αριθμός φανέλας εκτός του εύρους 1-11.
Υλοποίησε τη μέθοδο PlayAnalyzer.AnalyzeOffField() ώστε να εμφανίζει περιγραφές δραστηριοτήτων και προσώπων γύρω από τον αγωνιστικό χώρο.
Αυτή η μέθοδος δέχεται διαφορετικούς τύπους δεδομένων που πρέπει να αναλυθούν και να μετατραπούν στο κατάλληλο κείμενο για να βοηθήσουν τους δημοσιογράφους.
Για αρχή, θα καλύψουμε δεδομένα για το γήπεδο:
int)string)Οι άγνωστοι τύποι δεδομένων δεν πρέπει να επεξεργάζονται, οπότε αν η μέθοδος λάβει δεδομένα διαφορετικού τύπου, θα πρέπει να επιστραφεί μια κενή συμβολοσειρά.
PlayAnalyzer.AnalyzeOffField(5000);
// => "There are 5000 supporters at the match."
PlayAnalyzer.AnalyzeOffField("5 minutes to go!");
// => "5 minutes to go!"
PlayAnalyzer.AnalyzeOffField(0.5);
// => ""
Τροποποίησε τη μέθοδο PlayAnalyzer.AnalyzeOffField() ώστε να εμφανίζει περιγραφές των περιστατικών που συμβαίνουν κατά τη διάρκεια του αγώνα.
Τα περιστατικά μπορεί να είναι οποιαδήποτε υποκλάση του τύπου Incident και θα περιέχουν μια περιγραφή του περιστατικού.
Οι τραυματισμοί είναι ένα ιδιαίτερο είδος περιστατικού, επειδή προκαλούν τη διακοπή του αγώνα, οπότε θα πρέπει να αντιμετωπίζονται διαφορετικά.
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."
Τροποποίησε τη μέθοδο PlayAnalyzer.AnalyzeOffField() ώστε να αναφέρει τους προπονητές των συλλόγων που είναι παρόντες στον αγώνα.
Οι προπονητές είναι στιγμιότυπα του τύπου Manager και έχουν ένα όνομα και το όνομα του συλλόγου που προπονούν.
Ο σύλλογος του προπονητή μπορεί να είναι άγνωστος, οπότε θα οριστεί σε null.
Αν ο σύλλογος ενός προπονητή δεν είναι γνωστός, δεν θα πρέπει να αποτελεί μέρος της περιγραφής.
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)"
Γράψου στο Exercism για να μάθεις και να κατακτήσεις C# με 62 έννοιες178 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.