Οι λίστες λέξεων-κλειδιών είναι μια δομή δεδομένων με ζεύγη κλειδιού-τιμής.
[month: "April", year: 2018]
Οι λίστες λέξεων-κλειδιών είναι λίστες από πλειάδες {key, value} και μπορούν να γραφτούν και έτσι, αλλά η συντομότερη σύνταξη χρησιμοποιείται ευρύτερα.
[month: "April"] == [{:month, "April"}]
# => true
Τα κλειδιά σε μια λίστα λέξεων-κλειδιών πρέπει να είναι άτομα, αλλά οι τιμές μπορούν να είναι οτιδήποτε. Κάθε κλειδί μπορεί να χρησιμοποιηθεί περισσότερες από μία φορές. Τα ζεύγη κλειδιού-τιμής σε μια λίστα λέξεων-κλειδιών είναι διατεταγμένα.
Μπορείς να δουλέψεις με τις λίστες λέξεων-κλειδιών με τους ίδιους τρόπους που χρησιμοποιείς και για τις λίστες, ή μπορείς να χρησιμοποιήσεις το module Keyword.
Είσαι ο διευθυντής ενός κομψού εστιατορίου με μια αρκετά μεγάλη κάβα κρασιών. Πολλοί από τους πελάτες σου είναι απαιτητικοί λάτρεις του κρασιού. Το να βρεις το κατάλληλο μπουκάλι κρασί για έναν συγκεκριμένο πελάτη δεν είναι εύκολη υπόθεση.
Ως ιδιοκτήτης εστιατορίου με τεχνολογική άνεση, αποφάσισες να επιταχύνεις τη διαδικασία επιλογής κρασιού γράφοντας μια εφαρμογή που θα επιτρέπει στους επισκέπτες να φιλτράρουν τα κρασιά σου με βάση τις προτιμήσεις τους.
Στην οθόνη καλωσορίσματος της εφαρμογής σου, θέλεις να εμφανίζεις μια σύντομη επεξήγηση για κάθε χρώμα κρασιού.
Υλοποίησε τη συνάρτηση WineCellar.explain_colors/0. Δεν παίρνει ορίσματα και επιστρέφει μια λίστα λέξεων-κλειδιών με τα χρώματα του κρασιού ως κλειδιά και τις επεξηγήσεις ως τιμές.
| Χρώμα | Επεξήγηση |
|---|---|
:white |
Fermented without skin contact. |
:red |
Fermented with skin contact using dark-colored grapes. |
:rose |
Fermented with some skin contact, but not enough to qualify as a red wine. |
Ένα μπουκάλι κρασί αναπαρίσταται ως μια τριάδα με την ποικιλία σταφυλιού, το έτος και τη χώρα προέλευσης. Τα κρασιά αποθηκεύονται ανά χρώμα κρασιού σε μια λίστα λέξεων-κλειδιών.
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
]
Υλοποίησε τη συνάρτηση WineCellar.filter/3. Πρέπει να παίρνει μια λίστα λέξεων-κλειδιών με κρασιά, ένα άτομο χρώματος και μια λίστα λέξεων-κλειδιών με επιλογές, με προεπιλεγμένη τιμή []. Η συνάρτηση πρέπει να επιστρέφει μια λίστα με τα κρασιά ενός δεδομένου χρώματος.
WineCellar.filter(
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
],
:white
)
# => [
# {"Chardonnay", 2015, "Italy"},
# {"Pinot grigio", 2017, "Germany"}
# ]
Επέκτεινε τη συνάρτηση WineCellar.filter/3. Όταν της δίνεται η επιλογή :year, η συνάρτηση πρέπει να επιστρέφει μια λίστα με τα κρασιά ενός δεδομένου χρώματος από ένα δεδομένο έτος.
Χρησιμοποίησε τη συνάρτηση WineCellar.filter_by_year/2, η οποία έχει ήδη υλοποιηθεί. Παίρνει ως ορίσματα μια λίστα με κρασιά και ένα έτος και επιστρέφει μια λίστα με τα κρασιά ενός δεδομένου έτους.
WineCellar.filter(
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
],
:white,
year: 2015
)
# => [
# {"Chardonnay", 2015, "Italy"}
# ]
Επέκτεινε τη συνάρτηση WineCellar.filter/3. Όταν της δίνεται η επιλογή :country, η συνάρτηση πρέπει να επιστρέφει μια λίστα με τα κρασιά ενός δεδομένου χρώματος από μια δεδομένη χώρα.
Χρησιμοποίησε τη συνάρτηση WineCellar.filter_by_country/2, η οποία έχει ήδη υλοποιηθεί. Παίρνει ως ορίσματα μια λίστα με κρασιά και μια χώρα και επιστρέφει μια λίστα με τα κρασιά μιας δεδομένης χώρας.
Βεβαιώσου ότι η συνάρτηση δουλεύει όταν της δίνονται και οι δύο επιλογές, :year και :country, με οποιαδήποτε σειρά.
WineCellar.filter(
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
],
:white,
year: 2015,
country: "Germany"
)
# => []
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Elixir με 58 έννοιες168 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.