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.
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.
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.
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".
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"
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"
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"
Crie sua conta no Exercism para aprender e dominar Elixir com 58 conceitos168 exercícios e mentoria humana de verdade, tudo de graça.