switch
Вікіпедія описує інструкцію switch як «різновид механізму керування вибором, який дозволяє значенню змінної або виразу змінювати потік виконання програми».
Механізм використовує такі ключові слова: switch, case, break і default.
У найпростішому випадку вони перевіряють примітивний вираз або рядок тексту (англ. string) і ухвалюють рішення на основі його значення. Наприклад:
string direction = GetDirection();
switch (direction)
{
case "left":
GoLeft();
break;
case "right":
GoRight();
break;
default:
MarkTime();
break;
}
У найскладніших випадках вони запроваджують низхідне приведення типів 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)Невідомі типи даних не потрібно обробляти, тож якщо метод отримує дані іншого типу, слід повернути порожній рядок тексту (англ. 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 вправ та справжнє наставництво від людей, і все це безкоштовно.