Crachá

Crachá

Exercício de aprendizagem

Introdução

Nil

Nil é uma palavra do inglês que significa "nada" ou "zero". No Elixir, nil é um valor especial que significa uma ausência de valor.

# I do not have a favorite color
favorite_color = nil

Em outras linguagens de programação, valores null ou none podem desempenhar um papel parecido.

If

Além de cond, o Elixir também fornece a macro if/2, que é útil quando você precisa verificar apenas uma condição.

if/2 aceita uma condição e duas opções. Ela retorna a primeira opção se a condição for truthy e a segunda opção se a condição for 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!"

Também é possível escrever uma expressão if em uma única linha. Repare na vírgula depois da condição.

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

Essa sintaxe é útil para expressões muito curtas, mas deve ser evitada se a expressão não couber em uma única linha.

Truthy e falsy

No Elixir, todos os tipos de dados são avaliados como um valor truthy ou falsy quando aparecem em um contexto booleano (como uma expressão if). Todos os dados são considerados truthy, exceto false e nil. Em particular, strings vazias, o número inteiro 0 e listas vazias são todos considerados truthy no Elixir.

Instruções

Neste exercício, você vai escrever código para imprimir crachás de funcionários de uma fábrica. Cada funcionário tem um ID, um nome e o nome do departamento. Os rótulos dos crachás são formatados assim: "[id] - name - DEPARTMENT".

1. Imprima um crachá para um funcionário

Implemente a função NameBadge.print/3. Ela deve receber um ID, um nome e um departamento. Ela deve retornar o rótulo do crachá, com o nome do departamento em letras maiúsculas.

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

2. Imprima um crachá para um novo funcionário

Por causa de uma peculiaridade no sistema do computador, às vezes os novos funcionários ainda não têm um ID quando começam a trabalhar na fábrica. Como os crachás são obrigatórios, eles recebem um crachá temporário sem o prefixo de ID.

Estenda a função NameBadge.print/3. Quando o ID estiver ausente, ela deve imprimir um crachá sem ele.

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

3. Imprima um crachá para o dono

Até o dono da fábrica precisa usar um crachá o tempo todo. No entanto, o dono não tem um departamento. Nesse caso, o rótulo deve imprimir "OWNER" no lugar do nome do departamento.

Estenda a função NameBadge.print/3. Quando o departamento estiver ausente, considere que o crachá pertence ao dono da empresa.

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

Repare que é possível que o dono também seja um novo funcionário.

NameBadge.print(nil, "Rachel Miller", nil)
# => "Rachel Miller - OWNER"
Editar via GitHub O link abre em uma nova janela ou aba
Elixir Exercism

Tudo pronto para começar Crachá?

Crie sua conta no Exercism para aprender e dominar Elixir com 58 conceitos168 exercícios e mentoria humana de verdade, tudo de graça.