Διαδρομές
/
C#
C#
/
Ασκήσεις
/
The Weather in Deather
The Weather in Deather

The Weather in Deather

Άσκηση εκμάθησης

Εισαγωγή

Μέλη με σώμα έκφρασης

Πολλά είδη μελών δομών και κλάσεων (με κύρια εξαίρεση τα πεδία) μπορούν να χρησιμοποιήσουν τη σύνταξη μέλους με σώμα έκφρασης. Ο ορισμός ενός μέλους με μια έκφραση συχνά παράγει πιο συνοπτικό και ευανάγνωστο κώδικα από τα παραδοσιακά μπλοκ ή τις παραδοσιακές εντολές.

Οι μέθοδοι και οι ιδιότητες μόνο για ανάγνωση είναι ανάμεσα στα μέλη που μπορούν να οριστούν με σώμα έκφρασης.

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

public int Interesting => 1729;

Εκφράσεις switch

Μια έκφραση switch μπορεί να αντιστοιχίσει μια τιμή σε μία περίπτωση από ένα σύνολο μοτίβων και να επιστρέψει τη σχετιζόμενη τιμή ή να εκτελέσει τη σχετιζόμενη ενέργεια. Η αντιστοίχιση δηλώνεται με το σύμβολο =>. Επιπλέον, κάθε μοτίβο μπορεί να έχει έναν προαιρετικό φρουρό περίπτωσης, που εισάγεται με τη λέξη-κλειδί when. Η έκφραση του φρουρού περίπτωσης πρέπει να αποτιμάται ως αληθής για να επιλεγεί αυτός ο "κλάδος" του switch. Οι περιπτώσεις (γνωστές και ως κλάδοι switch) αξιολογούνται με τη σειρά που εμφανίζονται στο κείμενο και η διαδικασία διακόπτεται μόλις βρεθεί αντιστοιχία, επιστρέφοντας τη σχετιζόμενη τιμή.

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

Τριαδικοί τελεστές

Οι τριαδικοί τελεστές επιτρέπουν τον ορισμό συνθηκών if μέσα σε εκφράσεις αντί σε μπλοκ εντολών. Αυτό θυμίζει προσεγγίσεις του συναρτησιακού προγραμματισμού και συχνά κάνει τον κώδικα πιο εκφραστικό και λιγότερο επιρρεπή σε σφάλματα.

Ο τριαδικός τελεστής συνδυάζει 3 εκφράσεις: μια συνθήκη, ακολουθούμενη από μια έκφραση που αξιολογείται και επιστρέφεται αν η συνθήκη είναι αληθής (το τμήμα if, που εισάγεται με ?) και μια έκφραση που αξιολογείται και επιστρέφεται αν η συνθήκη είναι ψευδής (το τμήμα else, που εισάγεται με :).

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

Εκφράσεις throw

Οι εκφράσεις throw αποτελούν εναλλακτική λύση αντί για εντολές throw και ειδικότερα μπορούν να ενισχύσουν τις δυνατότητες των τριαδικών και άλλων σύνθετων εκφράσεων.

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

Οδηγίες

Σου ζητήθηκε να βελτιώσεις κάποιον παλιό κώδικα που σχετίζεται με έναν μετεωρολογικό σταθμό.

Ο μετεωρολογικός σταθμός δέχεται μετρήσεις και εξάγει κάποιες ενδείξεις, όπως θερμοκρασία και πίεση.

1. Βελτίωσε τη συντομία και την αναγνωσιμότητα των κατάλληλων μεθόδων

Αναδιαμόρφωσε όποιες κατάλληλες μεθόδους της κλάσης WeatherStation χρησιμοποιώντας μέλη με σώμα έκφρασης. Χρησιμοποίησε τριμερείς πράξεις και εκφράσεις switch όπου είναι κατάλληλο, για να βελτιώσεις την εκφραστικότητα και ενδεχομένως να μειώσεις τα σφάλματα.

Βεβαιώσου ότι όλα τα tests συνεχίζουν να περνούν.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
C# Exercism

Έτοιμος να ξεκινήσεις την άσκηση The Weather in Deather;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις C# με 62 έννοιες178 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.