Cantina

Cantina

Esercizio di apprendimento

Introduzione

Argomenti etichettati

A volte, quando una funzione accetta molti argomenti, può essere difficile ricordare l'ordine in cui vanno passati. Per facilitare la lettura, Gleam permette di etichettare gli argomenti con un nome.

Per etichettare un argomento, specifica il nome dell'etichetta prima del nome dell'argomento, separandoli con uno spazio.

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

Quando chiami una funzione con argomenti etichettati, puoi passare gli argomenti in qualsiasi ordine. Ognuna di queste chiamate a replace è equivalente:

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

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

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

Le etichette sono sempre facoltative. Anche se una funzione ha argomenti etichettati, puoi comunque chiamarla senza etichette.

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

Istruzioni

Sei il direttore di un ristorante elegante con una cantina ben fornita. Molti dei tuoi clienti sono appassionati di vino esigenti. Trovare la bottiglia giusta per un cliente in particolare non è un compito facile.

Da proprietario di ristorante esperto di tecnologia, hai deciso di velocizzare il processo di selezione del vino scrivendo un'app che permetta agli ospiti di filtrare i tuoi vini in base alle loro preferenze.

1. Ottenere tutti i vini di un dato colore

Una bottiglia di vino è rappresentata con un tipo personalizzato e i vini sono memorizzati in 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 funzione wines_of_color. Dovrebbe prendere un array di vini e restituire tutti i vini di un dato colore.

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. Ottenere tutte le bottiglie di vino di un dato paese

Implementa la funzione wines_from_country. Dovrebbe prendere un array di vini e restituire tutti i vini provenienti da un dato paese.

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. Ottenere tutti i vini di un dato colore imbottigliati in un dato paese

Implementa la funzione filter. Dovrebbe prendere un array di vini, un colore e un paese e restituire tutti i vini del colore dato imbottigliati nel paese dato.

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),
// ]
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Gleam Exercism

Vuoi iniziare Cantina?

Iscriviti a Exercism per imparare e padroneggiare Gleam con 33 concetti122 esercizi e il mentoring di persone reali, tutto gratis.