Wikipedia describe una sentencia 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 involucra las siguientes palabras clave: switch, case, break y default.
En su forma más simple, evalúan una expresión primitiva o de tipo string y toman una decisión basada 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 conversiones descendentes de tipo, case <Type> <variable>:, y guardas (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 de la cancha, y convertirlos en un flujo de eventos.
El equipo solo juega con una formación 4-3-3 y nunca estuvo de acuerdo con el cambio de 1965 a las reglas que permitía las sustituciones, y mucho menos con 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 devolver una descripción del jugador según su número de camiseta.
PlayAnalyzer.AnalyzeOnField(10);
// => "striker"
Modifica el método PlayAnalyzer.AnalyzeOnField() para reportar UNKNOWN cuando se procese un número de camiseta fuera del rango 1-11.
Implementa el método PlayAnalyzer.AnalyzeOffField() para devolver descripciones de las actividades y los personajes alrededor de la cancha.
Este método recibe distintos tipos de datos que se deben analizar y convertir en el texto adecuado para ayudar a los periodistas.
Para empezar, veremos los datos sobre el estadio:
int)string)Los tipos de datos desconocidos no se deben procesar, así que si el método recibe datos de un tipo diferente se debe devolver 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 devolver 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 se deben tratar de manera diferente.
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 mencionar a los entrenadores del club 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 no se conoce el club de un entrenador, 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.