Parcours
/
Gleam
Gleam
/
Exercices
/
Nettoyage de printemps
Nettoyage de printemps

Nettoyage de printemps

Exercice d'apprentissage

Introduction

Les assertions let

Lorsqu'on fait du filtrage par motif sur une valeur en Gleam, on doit s'assurer que les motifs couvrent toutes les valeurs possibles du type, sinon le code ne compilera pas.

Cette fonction devrait être rejetée car elle ne gère pas le cas où la liste est vide :

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

La plupart du temps, dans les programmes Gleam, on veut gérer tous les cas possibles, mais dans certains programmes comme les prototypes et les scripts rapides, on peut vouloir se concentrer uniquement sur le cas nominal et ne pas écrire de code pour les autres cas. C'est là qu'intervient le let assert de Gleam.

Avec les assertions let, un motif peut ne correspondre qu'à certaines des valeurs possibles d'un type, et si le motif ne correspond pas à une valeur, le programme plantera. En utilisant let assert, on peut écrire la fonction ci-dessus comme ceci :

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

Les bibliothèques Gleam ne devraient jamais utiliser d'assertions let, car elles peuvent faire planter le programme. À la place, elles devraient utiliser le type Result et laisser le développeur de l'application décider comment gérer les erreurs.

Instructions

Mika, l'organisatrice d'événements, a obtenu une promotion au travail, et dans le cadre de ses nouvelles responsabilités, elle s'occupe de la base de données des événements. Elle a rapidement remarqué qu'une grande partie des données est stockée d'une manière qui les rend difficiles à manipuler, alors on fait équipe pour les nettoyer avec un script à usage unique.

Comme le script ne sera exécuté qu'une seule fois, et que tu es sûr de la structure des données, tu peux considérer que c'est un bon endroit pour utiliser les let assertions de Gleam.

1. Extrais les erreurs

Chaque événement passé contient une liste de problèmes qui se sont produits pendant l'événement. Ils ont été stockés sous forme de résultats, mais ils sont toujours de la variante Error.

Implémente la fonction extract_error, qui prend un résultat dont on s'attend à ce qu'il soit toujours un Error et qui renvoie la valeur d'erreur qu'il contient.

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

2. Supprime le préfixe d'équipe

Les noms d'équipe ont été préfixés par le mot « Team », mais ce n'est pas nécessaire. Implémente la fonction remove_team_prefix pour retirer le préfixe d'un nom d'équipe.

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

3. Sépare la région et l'équipe

Chaque événement est organisé par une équipe, et chaque équipe appartient à une région. Dans la base de données, elles sont stockées dans une seule string, séparées par une virgule.

Implémente la fonction split_region_and_team pour découper la string en un tuple de deux strings, l'une pour la région et l'autre pour l'équipe. Le préfixe « Team » doit être retiré du nom de l'équipe.

split_region_and_team("East,Team Orange")
// -> #("East", "Orange")
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Gleam Exercism

Prêt à commencer Nettoyage de printemps ?

Inscris-toi sur Exercism pour apprendre et maîtriser Gleam avec 33 concepts122 exercices, et un vrai mentorat humain, le tout gratuitement.