Trilhas
/
C#
C#
/
Exercícios
/
The Weather in Deather
The Weather in Deather

The Weather in Deather

Exercício de aprendizagem

Introdução

Membros com corpo de expressão

Muitos tipos de membros de struct e de classe (sendo os campos a principal exceção) podem usar a sintaxe de membro com corpo de expressão. Definir um membro com uma expressão costuma produzir um código mais conciso e legível do que os blocos/instruções tradicionais.

Métodos e propriedades somente leitura estão entre os membros que podem ser definidos com corpo de expressão.

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

public int Interesting => 1729;

Expressões switch

Uma expressão switch pode associar um valor a um dos casos de um conjunto de padrões e retornar o valor associado ou executar a ação associada. A associação é indicada pelo símbolo =>. Além disso, cada padrão pode ter uma guarda de caso opcional, introduzida pela palavra-chave when. A expressão de guarda de caso precisa ser avaliada como true para que esse "braço" do switch seja selecionado. Os casos (também conhecidos como braços do switch) são avaliados na ordem do texto, e o processo é interrompido assim que uma correspondência é encontrada, retornando o valor associado.

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é"

Condicionais ternárias

Os operadores ternários permitem definir condições if dentro de expressões, em vez de em blocos de instruções. Isso ecoa abordagens de programação funcional e muitas vezes deixa o código mais expressivo e menos propenso a erros.

O operador ternário combina 3 expressões: uma condição seguida de uma expressão a ser avaliada e retornada se a condição for verdadeira (a parte if, introduzida por ?) e uma expressão a ser avaliada e retornada se a condição for falsa (a parte else, introduzida por :).

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

Expressões throw

As expressões throw são uma alternativa às instruções throw e, em particular, podem ampliar o poder dos ternários e de outras expressões compostas.

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

Instruções

Pediram para você melhorar um código legado relacionado a uma estação meteorológica.

A estação meteorológica recebe leituras e produz alguns indicadores, como temperatura e pressão.

1. Melhore a concisão e a legibilidade dos métodos apropriados

Refatore os métodos apropriados da classe WeatherStation usando membros com corpo de expressão. Use operações ternárias e expressões switch quando apropriado, para melhorar a expressividade e, potencialmente, reduzir erros.

Certifique-se de que todos os testes continuem passando.

Editar via GitHub O link abre em uma nova janela ou aba
C# Exercism

Tudo pronto para começar The Weather in Deather?

Crie sua conta no Exercism para aprender e dominar C# com 62 conceitos178 exercícios e mentoria humana de verdade, tudo de graça.