Kurzusok
/
C#
C#
/
Feladatok
/
Az időjárás Deatherben
Az időjárás Deatherben

Az időjárás Deatherben

Tanulófeladat

Bevezetés

Kifejezéstörzsű tagok

A struct- és osztálytagok számos fajtája (a mezők jelentik az elsődleges kivételt) használhatja a kifejezéstörzsű tag szintaxist. Egy tag kifejezéssel történő definiálása gyakran tömörebb és olvashatóbb kódot eredményez, mint a hagyományos blokkok vagy utasítások.

A metódusok és az írásvédett tulajdonságok is azon tagok közé tartoznak, amelyek kifejezéstörzzsel definiálhatók.

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

public int Interesting => 1729;

Switch-kifejezések

A switch-kifejezés egy értéket egy mintahalmaz egyik esetéhez illeszt, és visszaadja a hozzá tartozó értéket, vagy végrehajtja a hozzá tartozó műveletet. A hozzárendelést a => szimbólum jelöli. Emellett minden minta rendelkezhet egy opcionális esetőrrel, amelyet a when kulcsszó vezet be. Az esetőr kifejezésnek igazra kell értékelődnie ahhoz, hogy a switch adott „ágát” kiválassza. Az esetek (más néven switch-ágak) szöveges sorrendben értékelődnek ki, és amint egyezést talál, a folyamat leáll, és a hozzá tartozó érték visszaadódik.

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

Ternáris feltételes operátorok

A ternáris operátorok lehetővé teszik, hogy az if-feltételeket kifejezésekben definiáljuk utasításblokkok helyett. Ez a funkcionális programozási megközelítéseket idézi, és gyakran kifejezőbbé és kevésbé hibahajlamossá teheti a kódot.

A ternáris operátor 3 kifejezést kombinál: egy feltételt, amelyet egy kiértékelendő és visszaadandó kifejezés követ, ha a feltétel igaz (az if rész, amelyet a ? vezet be), és egy kiértékelendő és visszaadandó kifejezést, ha a feltétel hamis (az else rész, amelyet a : vezet be).

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

Throw kifejezések

A throw kifejezések alternatívát jelentenek a throw utasításokkal szemben, és különösen növelhetik a ternáris és más összetett kifejezések erejét.

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

Utasítások

Arra kértek, hogy javíts egy időjárás-állomással kapcsolatos legacy kódon.

Az időjárás-állomás méréseket fogad, és kiír néhány mutatót, például a hőmérsékletet és a nyomást.

1. Javítsd a megfelelő metódusok tömörségét és olvashatóságát

Refaktoráld a WeatherStation osztály megfelelő metódusait expression bodied memberek használatával. Ahol megfelelő, használj ternáris műveleteket és switch kifejezéseket, hogy javítsd a kifejezőerőt és esetleg csökkentsd a hibákat.

Biztosítsd, hogy minden teszt továbbra is sikeres legyen.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
C# Exercism

Készen állsz elkezdeni a(z) Az időjárás Deatherben feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) C# nyelvet 62 fogalom178 feladat segítségével, valódi emberi mentorálással, mindez ingyen.