Tracks
/
Gleam
Gleam
/
Ejercicios
/
El cofre del tesoro
El cofre del tesoro

El cofre del tesoro

Ejercicio de aprendizaje

Introducción

Genéricos

Un tipo es un tipo genérico cuando puede contener valores de cualquier tipo usando un parámetro de tipo.

Por ejemplo, este tipo Box tiene el parámetro de tipo a (escrito con letras minúsculas).

pub type Box(a) {
  Box(a)
}

El parámetro de tipo a es un marcador de posición para cualquier tipo, así que Box se puede usar con strings, ints o cualquier otro tipo.

Box("Hello, Joe!") // The type is Box(String)

Box(42) // The type is Box(Int)

Un tipo puede tener múltiples parámetros de tipo separándolos con comas.

pub type Pair(a, b) {
  Pair(a, b)
}

Funciones genéricas

Los parámetros de tipo también se pueden usar en los argumentos de las funciones.

Esta función toma un valor del tipo a y llama dos veces a una función que toma un a y devuelve un b.

pub fn twice(value: a, f: fn(a) -> b) -> b {
  f(value)
  f(value)
}
// The type is fn(String, fn(String) -> Nil) -> Nil
twice("Hello, Joe!", io.println)

Instrucciones

En este ejercicio vas a escribir un TreasureChest genérico (¡y mágico!) para guardar algunos tesoros.

1. Define el tipo personalizado genérico TreasureChest

Define un tipo personalizado TreasureChest con una sola variante.

La variante debe tener un valor String asociado, que se usará para almacenar la contraseña del cofre del tesoro.

La variante también debe tener un valor genérico asociado, que se usará para almacenar el tesoro. Este valor es genérico para que el tesoro pueda ser cualquier cosa.

2. Define el tipo UnlockResult

Define un tipo personalizado UnlockResult con dos variantes.

La primera variante debe ser Unlocked, y debe contener un valor genérico, que se usará para almacenar el tesoro.

La segunda variante debe ser WrongPassword, que no contiene ningún valor.

3. Define la función get_treasure

Esta función debe recibir dos parámetros:

  • un tipo personalizado genérico TreasureChest
  • un String (para probar una contraseña)

Esta función debe comparar el intento de contraseña proporcionado con el String del TreasureChest.

La función debe devolver un UnlockResult.

Si las contraseñas coinciden, devuelve Unlocked con el valor genérico del TreasureChest (¡el tesoro!)

Si las contraseñas no coinciden, devuelve WrongPassword.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Gleam Exercism

¿Todo listo para empezar El cofre del tesoro?

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