Треки
/
Gleam
Gleam
/
Вправи
/
Весняне прибирання
Весняне прибирання

Весняне прибирання

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

Вступ

Твердження let assert

Коли ми зіставляємо значення зі зразком у Gleam, треба подбати, щоб зразки охоплювали всі можливі значення цього типу, інакше код не скомпілюється.

Цю функцію буде відхилено, бо вона не обробила випадок, коли список порожній:

pub fn get_first_element_or_crash(items: List(e)) -> e {
  case items {
    [item, ..] -> item
  }
}

Здебільшого в програмах на Gleam ми хочемо обробити всі можливі випадки, але в деяких програмах, як-от прототипах чи швидких скриптах, нам може захотітися зосередитися лише на щасливому шляху та не писати код для решти випадків. Саме тут стає в пригоді let assert із Gleam.

Із твердженнями let assert зразок може збігатися лише з частиною можливих значень типу, і якщо зразок не збігається зі значенням, програма аварійно завершиться. Використавши let assert, ми можемо записати наведену вище функцію так:

pub fn get_first_element_or_crash(items: List(e)) -> e {
  let assert [item, ..] = items
  item
}

Бібліотеки Gleam ніколи не повинні використовувати твердження let assert, бо вони можуть призвести до аварійного завершення програми. Натомість їм варто використовувати тип Result і дозволити розробникові застосунку самому вирішити, як обробляти помилки.

Вказівки

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

Оскільки скрипт запускатиметься лише один раз, і ми впевнені у структурі даних, ми вважаємо, що це слушна нагода скористатися твердженнями let у Gleam.

1. Витягти помилки

Кожен минулий захід має список проблем, які трапилися під час нього. Їх збережено як результати, але вони завжди є варіантом Error.

Реалізуйте функцію extract_error, яка приймає результат, що, за припущенням, завжди є Error, і повертає вміщене значення помилки.

extract_error(Error("Not enough coffee"))
// -> "Not enough coffee"

2. Прибрати префікс команди

До назв команд додано префікс "Team ", але він не потрібен. Реалізуйте функцію remove_team_prefix, щоб прибрати цей префікс із назви команди.

remove_team_prefix("Team Turtle")
// -> "Turtle"

3. Розділити регіон і команду

Кожен захід проводить команда, а кожна команда належить до регіону. У базі даних вони зберігаються одним рядком тексту (англ. string), розділені комою.

Реалізуйте функцію split_region_and_team, щоб розділити рядок тексту на кортеж із двох рядків тексту: один для регіону, один для команди. Префікс "Team " слід прибрати з назви команди.

split_region_and_team("East,Team Orange")
// -> #("East", "Orange")
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Gleam Exercism

Час розпочати Весняне прибирання?

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