Διαδρομές
/
Gleam
Gleam
/
Ασκήσεις
/
Ενημερωτικό δελτίο
Ενημερωτικό δελτίο

Ενημερωτικό δελτίο

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

Εισαγωγή

Nil

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

io.println("Hello, Joe!")
// -> Nil

Οι τιμές στη Gleam δεν είναι "nil-able" ή "nullable", όπως σε κάποιες άλλες γλώσσες. Μια τιμή μπορεί να είναι Nil μόνο αν ο τύπος της είναι Nil, και μια τιμή οποιουδήποτε άλλου τύπου δεν μπορεί ποτέ να είναι Nil.

IO

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

Η μονάδα gleam/io στην πρότυπη βιβλιοθήκη της Gleam παρέχει συναρτήσεις για την εκτύπωση συμβολοσειρών στην κονσόλα.

io.println("Hello, Joe!")
// Hello, Joe!
// -> Nil

Άλλα πακέτα μπορούν να παρέχουν άλλες συναρτήσεις IO, όπως το simplifile, ένα πακέτο που παρέχει συναρτήσεις για την ανάγνωση και την εγγραφή αρχείων.

simplifile.read("favourite-colour.txt")
// -> Ok("Pink\n")

Οδηγίες

Ο Boris είναι μεγάλος λάτρης των μοντέλων τρένων και αποφάσισε να μοιραστεί το πάθος του με τον κόσμο ξεκινώντας ένα newsletter. Θα ξεκινήσει στέλνοντας το πρώτο τεύχος του newsletter σε φίλους και γνωστούς που μοιράζονται το χόμπι, οι διευθύνσεις email τους είναι αποθηκευμένες σε ένα αρχείο κειμένου.

Υπόδειξη: Χρησιμοποίησε το simplifile για χειρισμό αρχείων.

1. Διάβασε τις διευθύνσεις email από ένα αρχείο

Υλοποίησε τη συνάρτηση read_emails. Δέχεται μια συμβολοσειρά διαδρομής προς ένα αρχείο κειμένου που περιέχει διευθύνσεις email χωρισμένες με αλλαγές γραμμής και επιστρέφει μια λίστα με τις διευθύνσεις email από το αρχείο.

read_emails("/home/my_user/documents/model_train_friends_emails.txt")
// -> Ok(["rick@example.com", "choochoo42@example.com", "anna@example.com"])

2. Δημιούργησε ένα αρχείο καταγραφής για εγγραφή

Το να στείλεις ένα email είναι μια εργασία που μπορεί να αποτύχει για πολλούς απρόβλεπτους λόγους, όπως ένα τυπογραφικό λάθος στη διεύθυνση email ή προσωρινά προβλήματα δικτύου. Για να διασφαλίσεις ότι μπορείς να ξαναπροσπαθήσεις να στείλεις τα email σε όλους τους φίλους σου χωρίς να στείλεις διπλότυπα, πρέπει να καταγράψεις τις διευθύνσεις email που έχουν ήδη λάβει το email. Γι' αυτό, θα χρειαστείς ένα αρχείο καταγραφής.

Υλοποίησε τη συνάρτηση create_log_file. Δέχεται μια διαδρομή αρχείου και δημιουργεί ένα νέο κενό αρχείο σε αυτή τη θέση.

create_log_file("/home/my_user/documents/newsletter_issue1_log.txt")
// -> Ok(Nil)

3. Κατέγραψε ένα σταλμένο email

Υλοποίησε τη συνάρτηση log_sent_email. Δέχεται μια διαδρομή προς ένα αρχείο καταγραφής και μια συμβολοσειρά με τη διεύθυνση email. Γράφει τη διεύθυνση email στο αρχείο, ακολουθούμενη από μια αλλαγή γραμμής.

log_sent_email(
  "/home/my_user/documents/newsletter_issue1_log.txt",
  "joe@example.com",
)
// -> Ok(Nil)

4. Στείλε το newsletter

Τώρα που έχεις όλα τα δομικά στοιχεία της διαδικασίας αποστολής email, πρέπει να τα συνδυάσεις σε μία μόνο συνάρτηση.

Υλοποίησε τη συνάρτηση send_newsletter. Δέχεται μια διαδρομή του αρχείου με τις διευθύνσεις email, μια διαδρομή αρχείου καταγραφής και μια ανώνυμη συνάρτηση που στέλνει ένα email σε μια δεδομένη διεύθυνση email.

Θα πρέπει να διαβάζει όλες τις διευθύνσεις email από το δοσμένο αρχείο και να επιχειρεί να στείλει ένα email σε καθεμία από αυτές. Αν η ανώνυμη συνάρτηση που στέλνει το email επιστρέψει μια τιμή Ok, γράψε τη διεύθυνση email στο αρχείο καταγραφής. Φρόντισε να το κάνεις μόλις σταλεί το email.

send_newsletter(
  "model_train_friends_emails.txt",
  "newsletter_issue1_log.txt",
  send_email,
)
// -> Ok(Nil)
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Gleam Exercism

Έτοιμος να ξεκινήσεις την άσκηση Ενημερωτικό δελτίο;

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