Масиви ключових слів - це структура даних ключ-значення.
[month: "April", year: 2018]
Масиви ключових слів - це масиви кортежів {key, value}; їх можна записати і в такому вигляді, але коротший синтаксис уживають частіше.
[month: "April"] == [{:month, "April"}]
# => true
Ключі в масиві ключових слів мають бути атомами, а значеннями може бути будь-що. Кожен ключ можна використати більше ніж один раз. Пари ключ-значення в масиві ключових слів упорядковані.
З масивами ключових слів можна працювати так само, як і з масивами, або скористатися модулем 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 вправ та справжнє наставництво від людей, і все це безкоштовно.