Οι λίστες χαρακτήρων δημιουργούνται με το sigil ~c.
~c"hello"
Σημείωσε ότι σε παλαιότερες εκδόσεις της Elixir, οι λίστες χαρακτήρων αναπαρίστανται ως 'hello' με μονά εισαγωγικά.
Αν και μοιάζουν πολύ με τις συμβολοσειρές, οι δύο τύποι δεδομένων είναι αρκετά διαφορετικοί μεταξύ τους. Μια λίστα χαρακτήρων είναι μια λίστα ακεραίων. Οι ακέραιοι αναπαριστούν τις τιμές Unicode ενός δεδομένου χαρακτήρα, γνωστές και ως σημεία κώδικα.
[65, 66, 67]
# => ~c"ABC"
Μπορείς να προτάξεις έναν χαρακτήρα με το ? για να πάρεις το σημείο κώδικά του.
?A
# => 65
[?:, ?)]
# => ~c":)"
Επειδή οι λίστες χαρακτήρων είναι λίστες, μπορείς να δουλέψεις μαζί τους όπως με οποιαδήποτε άλλη λίστα, χρησιμοποιώντας αναδρομή και αντιστοίχιση προτύπων.
[first_letter | _] = ~c"cat"
first_letter
# => 99
Μπορείς να συνενώσεις δύο λίστες με το ++.
~c"hi" ++ ~c"!"
# => ~c"hi!"
Όσο μεγαλύτερη είναι η πρώτη λίστα, τόσο πιο αργή είναι η συνένωση, οπότε απόφευγε να προσθέτεις επανειλημμένα σε λίστες με αυθαίρετο μήκος.
Το case είναι μια δομή ελέγχου ροής που μας επιτρέπει να συγκρίνουμε μια δεδομένη τιμή με πολλά πρότυπα. Οι ρήτρες σε μια έκφραση case αξιολογούνται από πάνω προς τα κάτω, μέχρι να βρεθεί μια αντιστοίχιση.
age = 15
case age do
0 -> ~c"infant"
age when age < 4 -> ~c"baby"
age when age < 13 -> ~c"child"
age when age < 18 -> ~c"teenager"
_ -> ~c"adult"
end
# => ~c"teenager"
Εργάζεσαι ως διαχειριστής συστημάτων σε μια μεγάλη εταιρεία στο Μόναχο της Γερμανίας. Μία από τις αρμοδιότητές σου είναι η διαχείριση λογαριασμών email.
Ακούς παράπονα από ανθρώπους που λένε ότι δε μπορούν να γράψουν email στον κύριο Müller. Γρήγορα συνειδητοποιείς ότι οι περισσότεροι στην εταιρεία χρησιμοποιούν ένα παλιό πρόγραμμα email που δεν αναγνωρίζει το müller@firma.de ως έγκυρη διεύθυνση email εξαιτίας του μη ASCII χαρακτήρα.
Το να λες στους ανθρώπους να εγκαταλείψουν το αγαπημένο τους παλιό πρόγραμμα email είναι χαμένη μάχη, οπότε αποφασίζεις να δημιουργήσεις καθαρισμένα ψευδώνυμα για όλους τους λογαριασμούς email.
Υλοποίησε τη συνάρτηση sanitize/1. Θα πρέπει να δέχεται ένα όνομα χρήστη ως λίστα χαρακτήρων και να επιστρέφει το όνομα χρήστη αφού αφαιρεθούν όλοι οι χαρακτήρες εκτός από τα πεζά γράμματα.
Username.sanitize(~c"schmidt1985")
# => ~c"schmidt"
Επέκτεινε τη συνάρτηση sanitize/1. Δεν πρέπει να αφαιρεί τις κάτω παύλες από το όνομα χρήστη.
Username.sanitize(~c"mark_fischer$$$")
# => ~c"mark_fischer"
Υπάρχουν 4 χαρακτήρες μη ASCII στο γερμανικό αλφάβητο, και όλοι τους έχουν ευρέως αναγνωρισμένα υποκατάστατα ASCII.
| Γερμανικός χαρακτήρας | Υποκατάστατο ASCII |
|---|---|
| ä | ae |
| ö | oe |
| ü | ue |
| ß | ss |
Επέκτεινε τη συνάρτηση sanitize/1. Πρέπει να αντικαθιστά τους γερμανικούς χαρακτήρες σύμφωνα με τον πίνακα. Μπορείς να υποθέσεις με ασφάλεια ότι όλα τα ονόματα χρηστών είναι ήδη πεζά.
Username.sanitize(~c"cäcilie_weiß")
# => ~c"caecilie_weiss"
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Elixir με 58 έννοιες168 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.