Nil é uma palavra inglesa que significa "nada" ou "zero". Em Elixir, nil é um valor especial que representa uma ausência de valor.
# I do not have a favorite color
favorite_color = nil
Noutras linguagens de programação, valores como null ou none podem ter um papel semelhante.
Além de cond, Elixir também disponibiliza a macro if/2, que é útil quando só precisas de verificar uma condição.
if/2 aceita uma condição e duas opções. Devolve a primeira opção se a condição for truthy e a segunda 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 numa única linha. Repara na vírgula a seguir à condição.
if age > 16, do: "beer", else: "no beer"
Esta sintaxe é útil para expressões muito curtas, mas deve ser evitada se a expressão não couber numa única linha.
Em Elixir, todos os tipos de dados são avaliados como um valor truthy ou falsy quando aparecem num contexto Boolean (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 em Elixir.
Neste exercício vais escrever código para imprimir crachás com o nome dos funcionários de uma fábrica. Os funcionários têm um ID, um nome e o nome do departamento. As etiquetas dos crachás dos funcionários têm o seguinte formato: "[id] - name - DEPARTMENT".
Implementa a função NameBadge.print/3. Deve receber um ID, um nome e um departamento. Deve devolver a etiqueta do crachá, com o nome do departamento em maiúsculas.
NameBadge.print(67, "Katherine Williams", "Strategic Communication")
# => "[67] - Katherine Williams - STRATEGIC COMMUNICATION"
Devido a uma peculiaridade do sistema informático, os funcionários novos às vezes ainda não têm um ID quando começam a trabalhar na fábrica. Como os crachás são obrigatórios, recebem um crachá temporário sem o prefixo do ID.
Alarga a função NameBadge.print/3. Quando o ID não existir, deve imprimir um crachá sem esse prefixo.
NameBadge.print(nil, "Robert Johnson", "Procurement")
# => "Robert Johnson - PROCUREMENT"
Até o proprietário da fábrica tem de usar sempre um crachá. No entanto, o proprietário não tem departamento. Neste caso, a etiqueta deve imprimir "OWNER" em vez do nome do departamento.
Alarga a função NameBadge.print/3. Quando o departamento não existir, assume que o crachá pertence ao proprietário da empresa.
NameBadge.print(204, "Rachel Miller", nil)
# => "[204] - Rachel Miller - OWNER"
Repara que é possível que o proprietário também seja um funcionário novo.
NameBadge.print(nil, "Rachel Miller", nil)
# => "Rachel Miller - OWNER"
Inscreve-te no Exercism para aprenderes e dominares Elixir com 58 conceitos168 exercícios, e mentoria humana real, tudo grátis.