Cuando hacemos coincidencia de patrones sobre un valor en Gleam, debemos asegurarnos de que los patrones cubran todos los valores posibles del tipo; de lo contrario, el código no compila.
Esta función debería ser rechazada, 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 contemplar todos los casos posibles, pero en algunos programas, como prototipos y scripts rápidos, quizá queramos centrarnos solo en el camino feliz y no escribir código para los demás casos. Aquí es donde entra el let assert de Gleam.
Con las aserciones let, un patrón puede cubrir solo algunos de los valores posibles de un tipo, y si el patrón no coincide con un valor, el programa se caerá. 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 se caiga. En su lugar, deberían usar el tipo Result y dejar que quien desarrolla la aplicación decida cómo manejar los errores.
Mika, la organizadora de eventos, recibió un ascenso en el trabajo y, como parte de sus nuevas responsabilidades, quedó a cargo de la base de datos de eventos. Pronto se dio cuenta de que muchos de los datos están guardados de formas que dificultan trabajar con ellos, así que te unes a ella para limpiarlos con un script de una sola vez.
Como el script solo se va a ejecutar una vez y tienes confianza en la estructura de los datos, consideras que este es un buen lugar para usar las aserciones let de Gleam.
Cada evento pasado tiene una lista de problemas que ocurrieron durante el evento. Se han guardado como resultados, pero siempre son la variante Error.
Implementa la función extract_error, que recibe un resultado 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"
A los nombres de los equipos se les ha agregado el prefijo «Team », pero eso no es necesario. Implementa la función remove_team_prefix para quitar el prefijo del nombre de un equipo.
remove_team_prefix("Team Turtle")
// -> "Turtle"
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. Hay que quitar el prefijo «Team » del nombre del equipo.
split_region_and_team("East,Team Orange")
// -> #("East", "Orange")
Regístrate en Exercism para aprender y dominar Gleam con 33 conceptos122 ejercicios y mentoría humana real, todo gratis.