Rutas
/
Gleam
Gleam
/
Ejercicios
/
Limpieza de primavera
Limpieza de primavera

Limpieza de primavera

Ejercicio de aprendizaje

Introducción

Aserciones let

Cuando usamos la coincidencia de patrones sobre un valor en Gleam, tenemos que asegurarnos de que los patrones cubren todos los valores posibles del tipo; de lo contrario, el código no compilará.

Esta función debería rechazarse, ya que no contempla el caso en que la lista está vacía:

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

La mayoría de las veces, en los programas de Gleam queremos cubrir todos los casos posibles, pero en algunos programas, como prototipos y scripts rápidos, puede que queramos centrarnos solo en el camino feliz y no escribir código para los demás casos. Aquí es donde entra en juego let assert de Gleam.

Con las aserciones let, un patrón puede coincidir solo con algunos de los valores posibles de un tipo, y si el patrón no coincide con un valor, el programa fallará. Usando let assert podemos escribir la función anterior así:

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

Las bibliotecas de Gleam nunca deberían usar aserciones let, ya que pueden hacer que el programa falle. En su lugar, deberían usar el tipo Result y dejar que el desarrollador de la aplicación decida cómo gestionar los errores.

Instrucciones

Mika, la organizadora de eventos, ha ascendido en el trabajo y, como parte de sus nuevas responsabilidades, se encarga de la base de datos de eventos. Pronto se dio cuenta de que muchos datos se almacenan de formas que dificultan trabajar con ellos, así que formáis equipo para limpiarlos con un script de un solo uso.

Como el script solo se va a ejecutar una vez y estás seguro de la estructura de los datos, crees que este es un buen sitio para usar las let assertions de Gleam.

1. Extraer los errores

Cada evento pasado tiene una lista de problemas que se produjeron durante el evento. Se han almacenado como resultados, pero siempre son la variante Error.

Implementa la función extract_error, que recibe un resultado del que se espera que siempre sea un Error y devuelve el valor de error que contiene.

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

2. Quitar el prefijo del equipo

Los nombres de los equipos llevan el prefijo "Team ", pero no es necesario. Implementa la función remove_team_prefix para quitar el prefijo del nombre del equipo.

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

3. Dividir la región y el equipo

Cada evento lo organiza un equipo, y cada equipo pertenece a una región. En la base de datos se guardan en un solo string, separados por una coma.

Implementa la función split_region_and_team para dividir el string en una tupla de dos strings, uno para la región y otro para el equipo. Se debe quitar el prefijo "Team " del nombre del equipo.

split_region_and_team("East,Team Orange")
// -> #("East", "Orange")
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Gleam Exercism

¿Listo para empezar Limpieza de primavera?

Regístrate en Exercism para aprender y dominar Gleam con 33 conceptos122 ejercicios y mentoría humana real, todo gratis.