Διαδρομές
/
Gleam
Gleam
/
Ασκήσεις
/
Ανοιξιάτικο καθάρισμα
Ανοιξιάτικο καθάρισμα

Ανοιξιάτικο καθάρισμα

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

Εισαγωγή

Βεβαιώσεις let

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

Αυτή η συνάρτηση θα πρέπει να απορριφθεί, καθώς δεν έχει χειριστεί την περίπτωση όπου η λίστα είναι κενή:

pub fn get_first_element_or_crash(items: List(e)) -> e {
  case items {
    [item, ..] -> item
  }
}

Τις περισσότερες φορές στα προγράμματα Gleam θέλουμε να χειριζόμαστε κάθε πιθανή περίπτωση, αλλά σε κάποια προγράμματα, όπως πρωτότυπα και γρήγορα σενάρια, μπορεί να θέλουμε να επικεντρωθούμε μόνο στην ευτυχή διαδρομή και να μην γράψουμε κώδικα για άλλες περιπτώσεις. Εδώ έρχεται το let assert της Gleam.

Με τις βεβαιώσεις let, ένα πρότυπο μπορεί να ταιριάξει μόνο με μερικές από τις πιθανές τιμές ενός τύπου, και αν το πρότυπο δεν ταιριάξει με μια τιμή, το πρόγραμμα θα καταρρεύσει. Χρησιμοποιώντας το let assert μπορούμε να γράψουμε την παραπάνω συνάρτηση ως εξής:

pub fn get_first_element_or_crash(items: List(e)) -> e {
  let assert [item, ..] = items
  item
}

Οι βιβλιοθήκες Gleam δεν πρέπει ποτέ να χρησιμοποιούν βεβαιώσεις let, καθώς μπορούν να κάνουν το πρόγραμμα να καταρρεύσει. Αντ' αυτού, θα πρέπει να χρησιμοποιούν τον τύπο Result και να αφήνουν τον προγραμματιστή της εφαρμογής να αποφασίσει πώς να χειριστεί τα σφάλματα.

Οδηγίες

Η Mika, η διοργανώτρια εκδηλώσεων, πήρε προαγωγή στη δουλειά της και, ως μέρος των νέων της αρμοδιοτήτων, έχει αναλάβει τη βάση δεδομένων των εκδηλώσεων. Γρήγορα πρόσεξε ότι πολλά από τα δεδομένα είναι αποθηκευμένα με τρόπους που κάνουν τη δουλειά μαζί τους δύσκολη, οπότε συνεργάζεστε για να τα τακτοποιήσετε με ένα script μιας χρήσης.

Επειδή το script θα τρέξει μόνο μία φορά και γνωρίζεις καλά τη δομή των δεδομένων, θεωρείς ότι εδώ ταιριάζει να χρησιμοποιήσεις τις let assertions της Gleam.

1. Εξαγωγή σφαλμάτων

Κάθε προηγούμενη εκδήλωση έχει μια λίστα με προβλήματα που συνέβησαν κατά τη διάρκειά της. Αυτά έχουν αποθηκευτεί ως αποτελέσματα, αλλά είναι πάντα η παραλλαγή Error.

Υλοποίησε τη συνάρτηση extract_error, η οποία παίρνει ένα αποτέλεσμα που αναμένεται να είναι πάντα Error και επιστρέφει την τιμή σφάλματος που περιέχει.

extract_error(Error("Not enough coffee"))
// -> "Not enough coffee"

2. Αφαίρεση προθέματος ομάδας

Τα ονόματα των ομάδων έχουν το πρόθεμα "Team ", αλλά αυτό δεν χρειάζεται. Υλοποίησε τη συνάρτηση remove_team_prefix για να αφαιρείς το πρόθεμα από το όνομα μιας ομάδας.

remove_team_prefix("Team Turtle")
// -> "Turtle"

3. Διαχωρισμός περιοχής και ομάδας

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

Υλοποίησε τη συνάρτηση split_region_and_team για να χωρίζεις τη συμβολοσειρά σε μια πλειάδα δύο συμβολοσειρών, μία για την περιοχή και μία για την ομάδα. Το πρόθεμα "Team " πρέπει να αφαιρείται από το όνομα της ομάδας.

split_region_and_team("East,Team Orange")
// -> #("East", "Orange")
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Gleam Exercism

Έτοιμος να ξεκινήσεις την άσκηση Ανοιξιάτικο καθάρισμα;

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