Tracks
/
Gleam
Gleam
/
Ejercicios
/
Bodega de vinos
Bodega de vinos

Bodega de vinos

Ejercicio de aprendizaje

Introducción

Argumentos etiquetados

A veces, cuando una función recibe muchos argumentos, puede ser difícil recordar el orden en que se deben pasar. Para facilitar la legibilidad, Gleam permite etiquetar los argumentos con un nombre.

Para etiquetar un argumento, escribe el nombre de la etiqueta antes del nombre del argumento, separados por un espacio.

pub fn replace(
  in string: String,
  each target: String,
  with replacement: String
) -> String {
  // ...
}

Cuando llamas a una función con argumentos etiquetados, puedes dar los argumentos en cualquier orden. Todas estas llamadas a replace son equivalentes:

replace(in: "🍔🍔🍔", each: "🍔", with: "🍕")

replace(each: "🍔", in: "🍔🍔🍔", with: "🍕")

replace(with: "🍕", each: "🍔", in: "🍔🍔🍔")

Las etiquetas siempre son opcionales. Aunque una función tenga argumentos etiquetados, se puede llamar sin etiquetas.

replace("🍔🍔🍔", "🍔", "🍕")

Instrucciones

Eres el gerente de un restaurante elegante que tiene una cava de vinos considerable. Muchos de tus clientes son exigentes aficionados al vino. Encontrar la botella de vino adecuada para un cliente en particular no es una tarea fácil.

Como dueño de restaurante con buen conocimiento de la tecnología, decidiste agilizar el proceso de selección de vinos escribiendo una app que les permita a tus comensales filtrar tus vinos según sus preferencias.

1. Obtén todos los vinos de un color determinado

Una botella de vino se representa con un tipo personalizado, y los vinos se almacenan en un array.

[
  Wine("Chardonnay", 2015, "Italy", White),
  Wine("Pinot grigio", 2017, "Germany", White),
  Wine("Pinot noir", 2016, "France", Red),
  Wine("Dornfelder", 2018, "Germany", Rose)
]

Implementa la función wines_of_color. Debe recibir un array de vinos y devolver todos los vinos de un color determinado.

wines_of_color(
  [
    Wine("Chardonnay", 2015, "Italy", White),
    Wine("Pinot grigio", 2017, "Germany", White),
    Wine("Pinot noir", 2016, "France", Red),
    Wine("Dornfelder", 2018, "Germany", Rose)
  ],
  color: White
)
// -> [
//   Wine("Chardonnay", 2015, "Italy", White),
//   Wine("Pinot grigio", 2017, "Germany", White),
// ]

2. Obtén todas las botellas de vino de un país determinado

Implementa la función wines_from_country. Debe recibir un array de vinos y devolver todos los vinos de un país determinado.

wines_from_country(
  [
    Wine("Chardonnay", 2015, "Italy", White),
    Wine("Pinot grigio", 2017, "Germany", White),
    Wine("Pinot noir", 2016, "France", Red),
    Wine("Dornfelder", 2018, "Germany", Rose)
  ],
  country: "Germany"
)
// -> [
//   Wine("Dornfelder", 2018, "Germany", Rose)
// ]

3. Obtén todos los vinos de un color determinado embotellados en un país determinado

Implementa la función filter. Debe recibir un array de vinos, un color y un país, y devolver todos los vinos del color determinado embotellados en el país determinado.

filter(
  [
    Wine("Chardonnay", 2015, "Italy", White),
    Wine("Pinot grigio", 2017, "Germany", White),
    Wine("Pinot noir", 2016, "France", Red),
    Wine("Dornfelder", 2018, "Germany", Rose)
  ],
  color: White
  country: "Italy"
)
// -> [
//   Wine("Chardonnay", 2015, "Italy", White),
// ]
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Gleam Exercism

¿Todo listo para empezar Bodega de vinos?

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