A Wikipédia a switch utasítást így írja le: „egy szelekciós vezérlési mechanizmus, amely lehetővé teszi, hogy egy változó vagy kifejezés értéke megváltoztassa a program vezérlési folyamát”.
A mechanizmus a következő kulcsszavakat használja: switch, case, break és default.
A legegyszerűbb formájukban egy primitív vagy string kifejezést vizsgálnak meg, és annak értéke alapján döntenek. Például:
string direction = GetDirection();
switch (direction)
{
case "left":
GoLeft();
break;
case "right":
GoRight();
break;
default:
MarkTime();
break;
}
A legkifinomultabb formájukban megjelenik a lefelé kasztolás, case <Type> <variable>:, valamint az őrök (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;
}
Egy olyan rendszert fejlesztesz, amely segít egy futballklub weboldala munkatársainak beszámolni a mérkőzésekről. Ez a rendszer képes elemezni a mérkőzés különböző aspektusait, mind a pályán, mind azon kívül, és események folyamává alakítja őket.
A csapat kizárólag 4-3-3-as felállásban játszik, és sosem értett egyet az 1965-ös szabálymódosítással, amely engedélyezte a cseréket, a bővített keretekről nem is beszélve.
A játékosok leírásai a következők:
1 -> "goalie"
2 -> "left back"
3 & 4 -> "center back"
5 -> "right back"
6, 7 & 8 -> "midfielder"
9 -> "left wing"
10 -> "striker"
11 -> "right wing"
Valósítsd meg a statikus PlayAnalyzer.AnalyzeOnField() metódust, amely a mezszám alapján adja vissza a játékos leírását.
PlayAnalyzer.AnalyzeOnField(10);
// => "striker"
Módosítsd a PlayAnalyzer.AnalyzeOnField() metódust úgy, hogy UNKNOWN-t adjon vissza, ha az 1-11 tartományon kívüli mezszámot dolgoz fel.
Valósítsd meg a PlayAnalyzer.AnalyzeOffField() metódust, amely a játéktér körüli tevékenységek és szereplők leírásait adja vissza.
Ez a metódus különböző típusú adatokat kap, amelyeket elemezni kell, és megfelelő szöveggé kell alakítani, hogy segítsék az újságírókat.
Kezdetnek a stadionnal kapcsolatos adatokkal foglalkozunk:
int)string)Az ismeretlen típusú adatokat nem szabad feldolgozni, ezért ha a metódus más típusú adatot kap, üres stringet kell visszaadnia.
PlayAnalyzer.AnalyzeOffField(5000);
// => "There are 5000 supporters at the match."
PlayAnalyzer.AnalyzeOffField("5 minutes to go!");
// => "5 minutes to go!"
PlayAnalyzer.AnalyzeOffField(0.5);
// => ""
Módosítsd a PlayAnalyzer.AnalyzeOffField() metódust úgy, hogy a mérkőzés közben történő események leírásait adja vissza.
Az események az Incident típus bármely leszármazott osztálya lehetnek, és tartalmazzák az esemény leírását.
A sérülések az események egy különleges fajtáját jelentik, mert felfüggesztik a mérkőzést, ezért másképp kell kezelni őket.
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."
Módosítsd a PlayAnalyzer.AnalyzeOffField() metódust úgy, hogy megemlítse a mérkőzésen jelen lévő klubmenedzsereket.
A menedzserek a Manager típus példányai, és rendelkeznek egy névvel, valamint annak a klubnak a nevével, amelyet irányítanak.
A menedzser klubja ismeretlen lehet, ilyenkor null-ra lesz állítva.
Ha egy menedzser klubja nem ismert, az nem képezheti a leírás részét.
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)"
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) C# nyelvet 62 fogalom178 feladat segítségével, valódi emberi mentorálással, mindez ingyen.