Wikipedia describe una instrucción switch como «un tipo de mecanismo de control de selección que permite que el valor de una variable o una expresión cambie el flujo de control del programa».
El mecanismo implica las siguientes palabras clave: switch, case, break y default.
En su forma más sencilla, evalúan una expresión de tipo primitivo o de tipo string y toman una decisión basándose en su valor. Por ejemplo:
string direction = GetDirection();
switch (direction)
{
case "left":
GoLeft();
break;
case "right":
GoRight();
break;
default:
MarkTime();
break;
}
En su forma más sofisticada, introducen la conversión descendente de tipos case <Type> <variable>: y las cláusulas de guarda (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;
}
Estás desarrollando un sistema para ayudar al personal del sitio web de un club de fútbol a informar sobre los partidos. Este sistema es capaz de analizar distintos aspectos del partido, tanto dentro como fuera del campo, y convertirlos en un flujo de eventos.
El equipo juega siempre con una formación 4-3-3 y nunca ha aceptado el cambio de 1965 en las reglas que permitía las sustituciones, y mucho menos las plantillas ampliadas.
Las descripciones de los jugadores son las siguientes:
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 el método estático PlayAnalyzer.AnalyzeOnField() para mostrar una descripción del jugador según su número de camiseta.
PlayAnalyzer.AnalyzeOnField(10);
// => "striker"
Modifica el método PlayAnalyzer.AnalyzeOnField() para que devuelva UNKNOWN cuando se procese un número de camiseta fuera del rango 1-11.
Implementa el método PlayAnalyzer.AnalyzeOffField() para mostrar descripciones de las actividades y los personajes que rodean el terreno de juego.
Este método recibe distintos tipos de datos que deben analizarse y convertirse en el texto adecuado para ayudar a los periodistas.
Para empezar, vamos a cubrir los datos sobre el estadio:
int)string)Los tipos de datos desconocidos no deben procesarse, así que si el método recibe datos de otro tipo, debe devolverse un string vacío.
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 el método PlayAnalyzer.AnalyzeOffField() para que muestre descripciones de los incidentes que ocurren durante el partido.
Los incidentes pueden ser cualquier subclase del tipo Incident y contienen una descripción del incidente.
Las lesiones son un tipo especial de incidente porque hacen que el partido se detenga, así que deben tratarse de forma distinta.
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 el método PlayAnalyzer.AnalyzeOffField() para que mencione a los entrenadores de los clubes presentes durante el partido.
Los entrenadores son instancias del tipo Manager y tienen un nombre y el nombre del club que dirigen.
El club del entrenador puede ser desconocido, en cuyo caso se establecerá como null.
Si el club de un entrenador no se conoce, no debe formar parte de la descripción.
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)"
Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.