Un alias de tipo puede usarse en Gleam para dar un nombre conveniente a un tipo existente que, de otro modo, sería engorroso de escribir.
pub type Headers =
List(#(String, String))
pub fn html_headers() -> Headers {
[
#("content-type", "text/html"),
#("x-frame-options", "DENY"),
]
}
Cuando se escribe con pub type, el alias puede usarse fuera del módulo en el que se define. Si se omite pub, el alias es privado y no se puede hacer referencia a él desde otros módulos.
Los diccionarios en Gleam son la estructura de datos que permite almacenar información en pares clave-valor. En otros lenguajes, también pueden conocerse como arrays asociativos, hashes o diccionarios.
En un diccionario se puede usar cualquier tipo para las claves y los valores, y no se garantiza el orden de sus entradas al acceder a ellas o devolverlas.
Los diccionarios se crean y manipulan con funciones del 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")
En este ejercicio vas a implementar una forma de llevar un registro de las puntuaciones más altas del juego más popular de tu salón recreativo local.
Tienes que implementar 5 funciones, la mayoría relacionadas con la manipulación de un objeto que guarda las puntuaciones más altas.
Crea una función create_score_board que devuelva un dict que sirva como tabla de puntuaciones.
Las claves de este objeto serán los nombres de los jugadores y los valores, sus puntuaciones.
Para poder hacer pruebas, quieres incluir directamente una entrada en el objeto.
Esta entrada inicial debe constar de "The Best Ever" como nombre del jugador y 1_000_000 como puntuación.
create_score_board()
// returns an object with one initial entry
Para añadir un jugador a la tabla de puntuaciones, define la función add_player.
Acepta 3 parámetros:
La función devuelve un dict con el nuevo jugador y su puntuación añadidos.
Si los jugadores incumplen las normas del salón recreativo, se les elimina manualmente de la tabla de puntuaciones.
Define remove_player, que acepta 2 parámetros:
Esta función debe devolver el dict sin el jugador que se ha eliminado.
Si el jugador no estaba en la tabla desde el principio, no debe ocurrirle nada a la tabla: debe devolverse tal cual.
Si un jugador termina otra partida en el salón recreativo, se sumará una cierta cantidad de puntos a la puntuación que ya tenía en la tabla.
Implementa update_score, que acepta 3 parámetros:
La función debe devolver un dict con la puntuación actualizada.
Si el jugador no estaba en la tabla desde el principio, no debe ocurrirle nada a la tabla: debe devolverse tal cual.
El salón recreativo lleva una tabla de puntuaciones aparte los lunes. Al final del día, cada jugador de esa tabla recibe 100 puntos adicionales.
Implementa la función apply_monday_bonus, que acepta una tabla de puntuaciones.
La función devuelve un dict con los puntos de bonificación sumados para cada jugador que figura en esa tabla.
Regístrate en Exercism para aprender y dominar Gleam con 33 conceptos122 ejercicios y mentoría humana real, todo gratis.