Треки
/
Gleam
Gleam
/
Вправи
/
Винний погріб
Винний погріб

Винний погріб

Навчальна вправа

Вступ

Аргументи з мітками

Іноді, коли функція приймає багато аргументів, буває важко згадати порядок, у якому їх треба передавати. Щоб полегшити читання, Gleam дозволяє давати аргументам мітки.

Щоб додати аргументу мітку, вказуємо назву мітки перед назвою аргументу, відокремивши їх пробілом.

pub fn replace(
  in string: String,
  each target: String,
  with replacement: String
) -> String {
  // ...
}

Коли ми викликаємо функцію з аргументами, що мають мітки, аргументи можна передавати в будь-якому порядку. Усі ці виклики replace рівнозначні:

replace(in: "🍔🍔🍔", each: "🍔", with: "🍕")

replace(each: "🍔", in: "🍔🍔🍔", with: "🍕")

replace(with: "🍕", each: "🍔", in: "🍔🍔🍔")

Мітки завжди необовʼязкові. Навіть якщо функція має аргументи з мітками, її все одно можна викликати без них.

replace("🍔🍔🍔", "🍔", "🍕")

Вказівки

Ми керуємо елегантним рестораном із чималим винним погребом. Серед наших відвідувачів багато вимогливих поціновувачів вина. Знайти правильну пляшку вина для конкретного гостя нелегко.

Як власник ресторану, обізнаний із технологіями, ми вирішили пришвидшити процес вибору вина й написати застосунок, який дозволить гостям фільтрувати наше вино за їхніми вподобаннями.

1. Отримати всі вина заданого кольору

Пляшку вина представлено за допомогою власного типу, а вина зберігаються в масиві.

[
  Wine("Chardonnay", 2015, "Italy", White),
  Wine("Pinot grigio", 2017, "Germany", White),
  Wine("Pinot noir", 2016, "France", Red),
  Wine("Dornfelder", 2018, "Germany", Rose)
]

Реалізуйте функцію wines_of_color. Вона приймає масив вин і повертає всі вина заданого кольору.

wines_of_color(
  [
    Wine("Chardonnay", 2015, "Italy", White),
    Wine("Pinot grigio", 2017, "Germany", White),
    Wine("Pinot noir", 2016, "France", Red),
    Wine("Dornfelder", 2018, "Germany", Rose)
  ],
  color: White
)
// -> [
//   Wine("Chardonnay", 2015, "Italy", White),
//   Wine("Pinot grigio", 2017, "Germany", White),
// ]

2. Отримати всі пляшки вин із заданої країни

Реалізуйте функцію wines_from_country. Вона приймає масив вин і повертає всі вина із заданої країни.

wines_from_country(
  [
    Wine("Chardonnay", 2015, "Italy", White),
    Wine("Pinot grigio", 2017, "Germany", White),
    Wine("Pinot noir", 2016, "France", Red),
    Wine("Dornfelder", 2018, "Germany", Rose)
  ],
  country: "Germany"
)
// -> [
//   Wine("Dornfelder", 2018, "Germany", Rose)
// ]

3. Отримати всі вина заданого кольору, розлиті в заданій країні

Реалізуйте функцію filter. Вона приймає масив вин, колір і країну та повертає всі вина заданого кольору, розлиті в заданій країні.

filter(
  [
    Wine("Chardonnay", 2015, "Italy", White),
    Wine("Pinot grigio", 2017, "Germany", White),
    Wine("Pinot noir", 2016, "France", Red),
    Wine("Dornfelder", 2018, "Germany", Rose)
  ],
  color: White
  country: "Italy"
)
// -> [
//   Wine("Chardonnay", 2015, "Italy", White),
// ]
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Gleam Exercism

Час розпочати Винний погріб?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Gleam, а також 33 концепції122 вправи та справжнє наставництво від людей, і все це безкоштовно.