Tracks
/
C#
C#
/
Ejercicios
/
The Weather in Deather
The Weather in Deather

The Weather in Deather

Ejercicio de aprendizaje

Introducción

Miembros con cuerpo de expresión

Muchos tipos de miembros de estructuras y clases (los campos son la principal excepción) pueden usar la sintaxis de miembros con cuerpo de expresión. Definir un miembro con una expresión suele producir código más conciso y legible que los bloques y sentencias tradicionales.

Los métodos y las propiedades de solo lectura están entre los miembros que se pueden definir con cuerpos de expresión.

public int Times3(int input) => input * 3;

public int Interesting => 1729;

Expresiones switch

Una expresión switch puede hacer coincidir un valor con uno de los casos de un conjunto de patrones y devolver el valor asociado o realizar la acción asociada. La asociación se indica con el símbolo =>. Además, cada patrón puede tener una protección de caso opcional, introducida con la palabra clave when. La expresión de la protección de caso debe evaluarse como true para que se seleccione esa «rama» del switch. Los casos (también conocidos como ramas del switch) se evalúan en el orden en que aparecen en el texto, y el proceso se interrumpe y se devuelve el valor asociado en cuanto se encuentra una coincidencia.

double xx = 42d;

string interesting = xx switch
{
    0 => "I suppose zero is interesting",
    3.14 when DateTime.Now.Day == 14 && DateTime.Now.Month == 3 => "Mmm pie!",
    3.14 => "π",
    42 => "a bit of a cliché",
    1729 => "only if you are a pure mathematician",
    _ => "not interesting"
};

// => interesting == "a bit of a cliché"

Ternario condicional

Los operadores ternarios permiten definir condiciones if dentro de expresiones en lugar de en bloques de sentencias. Esto se parece a los enfoques de la programación funcional y, a menudo, puede hacer que el código sea más expresivo y menos propenso a errores.

El operador ternario combina 3 expresiones: una condición seguida de una expresión que se evalúa y se devuelve si la condición es verdadera (la parte if, introducida por ?) y una expresión que se evalúa y se devuelve si la condición es falsa (la parte else, introducida por :).

int a = 3, b = 4;
int max = a > b ? a : b;
// => 4

Expresiones throw

Las expresiones throw son una alternativa a las sentencias throw y, en particular, pueden aumentar la potencia de las expresiones ternarias y de otras expresiones compuestas.

string trimmed = str == null ? throw new ArgumentException() : str.Trim();

Instrucciones

Te han pedido que mejores algo de código heredado relacionado con una estación meteorológica.

La estación meteorológica acepta lecturas y produce algunos indicadores, como la temperatura y la presión.

1. Mejora la concisión y la legibilidad de los métodos adecuados

Refactoriza los métodos adecuados de la clase WeatherStation usando miembros con cuerpo de expresión. Usa operaciones ternarias y expresiones switch donde corresponda para mejorar la expresividad y, potencialmente, reducir los errores.

Asegúrate de que todos los tests sigan pasando.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
C# Exercism

¿Todo listo para empezar The Weather in Deather?

Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.