Trilhas
/
Gleam
Gleam
/
Exercícios
/
Limpeza de Primavera
Limpeza de Primavera

Limpeza de Primavera

Exercício de aprendizagem

Introdução

Asserções let

Ao fazer correspondência de padrões com um valor em Gleam, precisamos garantir que os padrões cubram todos os valores possíveis do tipo; caso contrário, o código não compila.

Esta função deveria ser rejeitada, pois não trata o caso em que a lista está vazia:

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

Na maior parte do tempo, em programas Gleam queremos tratar todos os casos possíveis, mas em alguns programas, como protótipos e scripts rápidos, talvez queiramos focar apenas no caminho feliz e não escrever código para os outros casos. É aí que entra o let assert do Gleam.

Com as asserções let, um padrão pode corresponder apenas a alguns dos valores possíveis de um tipo e, se o padrão não corresponder a um valor, o programa quebra. Usando let assert, podemos escrever a função acima assim:

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

Bibliotecas Gleam nunca devem usar asserções let, pois elas podem quebrar o programa. Em vez disso, devem usar o tipo Result e deixar que quem desenvolve a aplicação decida como tratar os erros.

Instruções

Mika, a organizadora de eventos, foi promovida no trabalho e, como parte de suas novas responsabilidades, agora é ela quem cuida do banco de dados de eventos. Ela logo percebeu que muitos dos dados estão armazenados de formas que dificultam o trabalho, então vocês vão se juntar para limpá-los com um script de uso único.

Como o script vai rodar só uma vez e você conhece bem a estrutura dos dados, este é um bom lugar para usar as let assertions do Gleam.

1. Extrair os erros

Cada evento passado tem uma lista de problemas que ocorreram durante o evento. Eles foram armazenados como results, mas são sempre a variante Error.

Implemente a função extract_error, que recebe um result que deve ser sempre um Error e retorna o valor de erro contido nele.

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

2. Remover o prefixo de equipe

Os nomes das equipes foram prefixados com a palavra "Team ", mas isso não é necessário. Implemente a função remove_team_prefix para remover o prefixo do nome de uma equipe.

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

3. Separar região e equipe

Cada evento é organizado por uma equipe, e cada equipe pertence a uma região. No banco de dados, eles ficam armazenados em uma única string, separados por uma vírgula.

Implemente a função split_region_and_team para dividir a string em uma tupla de duas strings, uma para a região e outra para a equipe. O prefixo "Team " deve ser removido do nome da equipe.

split_region_and_team("East,Team Orange")
// -> #("East", "Orange")
Editar via GitHub O link abre em uma nova janela ou aba
Gleam Exercism

Tudo pronto para começar Limpeza de Primavera?

Crie sua conta no Exercism para aprender e dominar Gleam com 33 conceitos122 exercícios e mentoria humana de verdade, tudo de graça.