Las listas de palabras clave son una estructura de datos de clave-valor.
[month: "April", year: 2018]
Las listas de palabras clave son listas de tuplas {key, value} y también se pueden escribir así, pero la sintaxis corta se usa mucho más.
[month: "April"] == [{:month, "April"}]
# => true
Las claves de una lista de palabras clave deben ser átomos, pero los valores pueden ser cualquier cosa. Cada clave se puede usar más de una vez. Los pares de clave-valor de una lista de palabras clave están ordenados.
Puedes trabajar con las listas de palabras clave usando los mismos enfoques que con las listas, o puedes usar el módulo Keyword.
Eres el gerente de un restaurante elegante con una bodega considerable. Muchos de tus clientes son exigentes aficionados al vino. Encontrar la botella de vino adecuada para un cliente concreto no es tarea fácil.
Como propietario de un restaurante con buen dominio de la tecnología, decidiste agilizar el proceso de selección de vinos escribiendo una aplicación que permita a los clientes filtrar tus vinos según sus preferencias.
En la pantalla de bienvenida de tu aplicación, quieres mostrar una breve explicación de cada color de vino.
Implementa la función WineCellar.explain_colors/0. No recibe argumentos y devuelve una keyword list con los colores de vino como claves y las explicaciones como valores.
| Color | Explicación |
|---|---|
:white |
Fermented without skin contact. |
:red |
Fermented with skin contact using dark-colored grapes. |
:rose |
Fermented with some skin contact, but not enough to qualify as a red wine. |
Una botella de vino se representa como una tupla de 3 elementos: variedad de uva, año y país de origen. Los vinos se almacenan por color de vino en una keyword list.
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
]
Implementa la función WineCellar.filter/3. Debe recibir una keyword list de vinos, un átomo de color y una keyword list de opciones, con un valor predeterminado de []. La función debe devolver una lista de vinos de un color dado.
WineCellar.filter(
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
],
:white
)
# => [
# {"Chardonnay", 2015, "Italy"},
# {"Pinot grigio", 2017, "Germany"}
# ]
Amplía la función WineCellar.filter/3. Cuando reciba una opción :year, la función debe devolver una lista de vinos de un color dado de un año dado.
Usa la función WineCellar.filter_by_year/2, ya implementada. Recibe una lista de vinos y un año como argumentos y devuelve una lista de vinos de un año dado.
WineCellar.filter(
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
],
:white,
year: 2015
)
# => [
# {"Chardonnay", 2015, "Italy"}
# ]
Amplía la función WineCellar.filter/3. Cuando reciba una opción :country, la función debe devolver una lista de vinos de un color dado de un país dado.
Usa la función WineCellar.filter_by_country/2, ya implementada. Recibe una lista de vinos y un país como argumentos y devuelve una lista de vinos de un país dado.
Asegúrate de que la función funcione cuando reciba tanto la opción :year como la :country, en cualquier orden.
WineCellar.filter(
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
],
:white,
year: 2015,
country: "Germany"
)
# => []
Regístrate en Exercism para aprender y dominar Elixir con 58 conceptos168 ejercicios y mentoría humana real, todo gratis.