Trilhas
/
Gleam
Gleam
/
Exercícios
/
Adega de vinhos
Adega de vinhos

Adega de vinhos

Exercício de aprendizagem

Introdução

Argumentos rotulados

Às vezes, quando uma função recebe muitos argumentos, pode ser difícil lembrar a ordem em que eles devem ser passados. Para facilitar a leitura, o Gleam permite rotular os argumentos com um nome.

Para rotular um argumento, escreva o nome do rótulo antes do nome do argumento, separados por um espaço.

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

Ao chamar uma função com argumentos rotulados, os argumentos podem ser passados em qualquer ordem. Todas estas chamadas a replace são equivalentes:

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

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

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

Os rótulos são sempre opcionais. Mesmo que uma função tenha argumentos rotulados, ela ainda pode ser chamada sem rótulos.

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

Instruções

Você é o gerente de um restaurante chique que tem uma adega considerável. Muitos dos seus clientes são entusiastas exigentes de vinho. Encontrar a garrafa certa de vinho para um cliente específico não é uma tarefa fácil.

Como dono de restaurante ligado em tecnologia, você decidiu acelerar o processo de seleção de vinhos escrevendo um aplicativo que permite aos clientes filtrar seus vinhos de acordo com as preferências deles.

1. Obter todos os vinhos de uma determinada cor

Uma garrafa de vinho é representada por um tipo personalizado, e os vinhos são armazenados em uma lista.

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

Implemente a função wines_of_color. Ela deve receber uma lista de vinhos e retornar todos os vinhos de uma determinada cor.

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. Obter todas as garrafas de vinho de um determinado país

Implemente a função wines_from_country. Ela deve receber uma lista de vinhos e retornar todos os vinhos de um determinado país.

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. Obter todos os vinhos de uma determinada cor engarrafados em um determinado país

Implemente a função filter. Ela deve receber uma lista de vinhos, uma cor e um país e retornar todos os vinhos da cor determinada engarrafados no 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 via GitHub O link abre em uma nova janela ou aba
Gleam Exercism

Tudo pronto para começar Adega de vinhos?

Crie sua conta no Exercism para aprender e dominar Gleam com 33 conceitos122 exercícios e mentoria humana de verdade, tudo de graça.