Keyword-Listen sind eine Schlüssel-Wert-Datenstruktur.
[month: "April", year: 2018]
Keyword-Listen sind Listen von {key, value}-Tupeln und können auch so geschrieben werden, aber die kürzere Syntax wird häufiger verwendet.
[month: "April"] == [{:month, "April"}]
# => true
Schlüssel in einer Keyword-Liste müssen Atome sein, aber die Werte können beliebig sein. Jeder Schlüssel kann mehr als einmal verwendet werden. Die Schlüssel-Wert-Paare in einer Keyword-Liste sind geordnet.
Du kannst mit Keyword-Listen genauso arbeiten wie mit Listen, oder du kannst das Keyword-Modul verwenden.
Du bist der Manager eines schicken Restaurants mit einem ansehnlichen Weinkeller. Viele deiner Gäste sind anspruchsvolle Weinliebhaber. Die richtige Flasche Wein für einen bestimmten Gast zu finden, ist keine leichte Aufgabe.
Als technikbegeisterter Restaurantbesitzer hast du beschlossen, die Weinauswahl zu beschleunigen, indem du eine App schreibst, mit der deine Gäste deine Weine nach ihren Vorlieben filtern können.
Auf dem Startbildschirm deiner App möchtest du eine kurze Erklärung zu jeder Weinfarbe anzeigen.
Implementiere die Funktion WineCellar.explain_colors/0. Sie nimmt keine Argumente entgegen und gibt eine Keyword-Liste zurück, in der die Weinfarben die Schlüssel und die Erklärungen die Werte sind.
| Farbe | Erklärung |
|---|---|
:white |
Ohne Maischekontakt vergoren. |
:red |
Mit Maischekontakt vergoren, aus dunklen Trauben. |
:rose |
Mit etwas Maischekontakt vergoren, aber nicht genug, um als Rotwein zu gelten. |
Eine Flasche Wein wird als 3-Tupel aus Rebsorte, Jahr und Herkunftsland dargestellt. Die Weine werden nach Weinfarbe in einer Keyword-Liste gespeichert.
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
]
Implementiere die Funktion WineCellar.filter/3. Sie soll eine Keyword-Liste mit Weinen, ein Atom für die Farbe und eine Keyword-Liste mit Optionen entgegennehmen, wobei der Standardwert [] ist. Die Funktion soll eine Liste der Weine der angegebenen Farbe zurückgeben.
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"}
# ]
Erweitere die Funktion WineCellar.filter/3. Wird ihr die Option :year übergeben, soll sie eine Liste der Weine der angegebenen Farbe aus dem angegebenen Jahr zurückgeben.
Verwende die bereits implementierte Funktion WineCellar.filter_by_year/2. Sie nimmt eine Liste von Weinen und ein Jahr als Argumente entgegen und gibt eine Liste der Weine aus dem angegebenen Jahr zurück.
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"}
# ]
Erweitere die Funktion WineCellar.filter/3. Wird ihr die Option :country übergeben, soll sie eine Liste der Weine der angegebenen Farbe aus dem angegebenen Land zurückgeben.
Verwende die bereits implementierte Funktion WineCellar.filter_by_country/2. Sie nimmt eine Liste von Weinen und ein Land als Argumente entgegen und gibt eine Liste der Weine aus dem angegebenen Land zurück.
Stelle sicher, dass die Funktion funktioniert, wenn ihr sowohl die Option :year als auch die Option :country übergeben wird, und zwar in beliebiger Reihenfolge.
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"
)
# => []
Melde dich bei Exercism an, um Elixir mit 58 Konzepte168 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.