Track
/
Elixir
Elixir
/
Esercizi
/
Cartellino con il nome
Cartellino con il nome

Cartellino con il nome

Esercizio di apprendimento

Introduzione

Nil

Nil è una parola inglese che significa «nothing» o «zero». In Elixir, nil è un valore speciale che indica un'assenza di valore.

# I do not have a favorite color
favorite_color = nil

In altri linguaggi di programmazione, valori come null o none possono svolgere un ruolo simile.

If

Oltre a cond, Elixir fornisce anche la macro if/2, utile quando devi controllare una sola condizione.

if/2 accetta una condizione e due opzioni. Restituisce la prima opzione se la condizione è truthy, e la seconda opzione se la condizione è falsy.

age = 15

if age >= 16 do
  "You are allowed to drink beer in Germany."
else
  "No beer for you!"
end

# => "No beer for you!"

È anche possibile scrivere un'espressione if su una sola riga. Nota la virgola dopo la condizione.

if age > 16, do: "beer", else: "no beer"

Questa sintassi è utile per espressioni molto brevi, ma va evitata se l'espressione non sta su una sola riga.

Truthy e falsy

In Elixir, tutti i tipi di dati restituiscono un valore truthy o falsy quando vengono incontrati in un contesto booleano (come un'espressione if). Tutti i dati sono considerati truthy tranne false e nil. In particolare, le stringhe vuote, il numero intero 0 e gli array vuoti sono tutti considerati truthy in Elixir.

Istruzioni

In questo esercizio scriverai codice per stampare badge con il nome per i dipendenti di una fabbrica. Ogni dipendente ha un ID, un nome e il nome del reparto. Le etichette dei badge dei dipendenti hanno il seguente formato: "[id] - name - DEPARTMENT".

1. Stampa un badge per un dipendente

Implementa la funzione NameBadge.print/3. Deve ricevere un id, un nome e un reparto. Deve restituire l'etichetta del badge, con il nome del reparto in maiuscolo.

NameBadge.print(67, "Katherine Williams", "Strategic Communication")
# => "[67] - Katherine Williams - STRATEGIC COMMUNICATION"

2. Stampa un badge per un nuovo dipendente

A causa di una stranezza del sistema informatico, a volte i nuovi dipendenti non hanno ancora un ID quando iniziano a lavorare in fabbrica. Dato che i badge sono obbligatori, riceveranno un badge temporaneo senza il prefisso con l'ID.

Estendi la funzione NameBadge.print/3. Quando l'id manca, deve stampare un badge senza l'ID.

NameBadge.print(nil, "Robert Johnson", "Procurement")
# => "Robert Johnson - PROCUREMENT"

3. Stampa un badge per il proprietario

Persino il proprietario della fabbrica deve indossare un badge in ogni momento. Però il proprietario non ha un reparto. In questo caso, l'etichetta deve stampare "OWNER" al posto del nome del reparto.

Estendi la funzione NameBadge.print/3. Quando il reparto manca, presupponi che il badge appartenga al proprietario dell'azienda.

NameBadge.print(204, "Rachel Miller", nil)
# => "[204] - Rachel Miller - OWNER"

Nota che è possibile che il proprietario sia anche un nuovo dipendente.

NameBadge.print(nil, "Rachel Miller", nil)
# => "Rachel Miller - OWNER"
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Elixir Exercism

Vuoi iniziare Cartellino con il nome?

Iscriviti a Exercism per imparare e padroneggiare Elixir con 58 concetti168 esercizi e il mentoring di persone reali, tutto gratis.