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.
Кожен минулий захід має список проблем, які трапилися під час нього. Їх збережено як результати, але вони завжди є варіантом Error.
Реалізуйте функцію extract_error, яка приймає результат, що, за припущенням, завжди є Error, і повертає вміщене значення помилки.
extract_error(Error("Not enough coffee"))
// -> "Not enough coffee"
До назв команд додано префікс "Team ", але він не потрібен. Реалізуйте функцію remove_team_prefix, щоб прибрати цей префікс із назви команди.
remove_team_prefix("Team Turtle")
// -> "Turtle"
Кожен захід проводить команда, а кожна команда належить до регіону. У базі даних вони зберігаються одним рядком тексту (англ. string), розділені комою.
Реалізуйте функцію split_region_and_team, щоб розділити рядок тексту на кортеж із двох рядків тексту: один для регіону, один для команди. Префікс "Team " слід прибрати з назви команди.
split_region_and_team("East,Team Orange")
// -> #("East", "Orange")
Зареєструйтеся на Exercism, щоб вивчати й опановувати Gleam, а також 33 концепції122 вправи та справжнє наставництво від людей, і все це безкоштовно.