Em Gleam, um alias de tipo permite dar um nome mais conveniente a um tipo que já existe e que, de outra forma, seria trabalhoso de escrever.
pub type Headers =
List(#(String, String))
pub fn html_headers() -> Headers {
[
#("content-type", "text/html"),
#("x-frame-options", "DENY"),
]
}
Quando é escrito com pub type, o alias pode ser usado fora do módulo onde é definido. Se omitires o pub, o alias fica privado e não pode ser referido noutros módulos.
Os dicionários em Gleam são a estrutura de dados que guarda informação em pares chave-valor. Noutras linguagens, também podem ser conhecidos como arrays associativos, hashes ou dicionários.
Qualquer tipo pode ser usado para as chaves e os valores de um dicionário, e este não garante a ordem das suas entradas quando são acedidas ou devolvidas.
Os dicionários são criados e manipulados com funções do módulo gleam/dict.
// Create an empty dict
let dict1 = dict.new()
// Create a dict with some values
let dict2 = dict.from_list([
#("name", "Gleam"),
#("colour", "Pink"),
])
// Add a value to a dict
let dict3 = dict.insert(dict2, "website", "https://gleam.run")
// Get a value from a dict
let name = dict.get(dict3, "name")
// -> Ok("Gleam")
Neste exercício, estás a implementar uma forma de acompanhar as pontuações máximas do jogo mais popular do teu salão de jogos local.
Tens 5 funções para implementar, na sua maioria relacionadas com a manipulação de um objeto que guarda pontuações máximas.
Cria uma função create_score_board que devolve um dicionário que serve como quadro de pontuações.
As chaves deste objeto serão os nomes dos jogadores e os valores serão as respetivas pontuações.
Para efeitos de teste, queres incluir diretamente uma entrada no objeto.
Esta entrada inicial deve consistir em "The Best Ever" como nome do jogador e 1_000_000 como pontuação.
create_score_board()
// returns an object with one initial entry
Para adicionar um jogador ao quadro de pontuações, define a função add_player.
Aceita 3 parâmetros:
A função devolve um dicionário com o novo jogador e a sua pontuação adicionados.
Se os jogadores violarem as regras do salão de jogos, são removidos manualmente do quadro de pontuações.
Define remove_player, que aceita 2 parâmetros:
Esta função deve devolver o dicionário sem o jogador que foi removido.
Se o jogador não estiver no quadro à partida, não deve acontecer nada ao quadro: este deve ser devolvido tal como está.
Se um jogador terminar outro jogo no salão de jogos, é adicionada uma determinada quantidade de pontos à pontuação anterior do quadro.
Implementa update_score, que aceita 3 parâmetros:
A função deve devolver um dicionário com a pontuação atualizada.
Se o jogador não estiver no quadro à partida, não deve acontecer nada ao quadro: este deve ser devolvido tal como está.
O salão de jogos mantém um quadro de pontuações separado às segundas-feiras. No final do dia, cada jogador nesse quadro recebe 100 pontos adicionais.
Implementa a função apply_monday_bonus, que aceita um quadro de pontuações.
A função devolve um dicionário com os pontos de bónus adicionados a cada jogador que consta desse quadro.
Inscreve-te no Exercism para aprenderes e dominares Gleam com 33 conceitos122 exercícios, e mentoria humana real, tudo grátis.