Nil es una palabra en inglés que significa «nothing» o «zero». En Elixir, nil es un valor especial que significa una ausencia de valor.
# I do not have a favorite color
favorite_color = nil
En otros lenguajes de programación, los valores null o none podrían cumplir un rol similar.
Además de cond, Elixir también proporciona la macro if/2, que es útil cuando necesitas verificar una sola condición.
if/2 acepta una condición y dos opciones. Devuelve la primera opción si la condición es truthy, y la segunda opción si la condición es 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!"
También es posible escribir una expresión if en una sola línea. Fíjate en la coma después de la condición.
if age > 16, do: "beer", else: "no beer"
Esta sintaxis es útil para expresiones muy cortas, pero conviene evitarla si la expresión no cabe en una sola línea.
En Elixir, todos los tipos de datos se evalúan como un valor truthy o falsy cuando aparecen en un contexto booleano (como una expresión if). Todos los datos se consideran truthy excepto false y nil. En particular, los strings vacíos, el entero 0 y los arrays vacíos se consideran truthy en Elixir.
En este ejercicio escribirás código para imprimir gafetes con los nombres de los empleados de una fábrica. Los empleados tienen un ID, un nombre y el nombre de su departamento. Las etiquetas de los gafetes de los empleados tienen el siguiente formato: "[id] - name - DEPARTMENT".
Implementa la función NameBadge.print/3. Debe recibir un ID, un nombre y un departamento. Debe devolver la etiqueta del gafete, con el nombre del departamento en mayúsculas.
NameBadge.print(67, "Katherine Williams", "Strategic Communication")
# => "[67] - Katherine Williams - STRATEGIC COMMUNICATION"
Debido a una peculiaridad en el sistema de la computadora, en ocasiones los empleados nuevos todavía no tienen un ID cuando empiezan a trabajar en la fábrica. Como los gafetes son obligatorios, recibirán un gafete temporal sin el prefijo del ID.
Extiende la función NameBadge.print/3. Cuando falte el ID, debe imprimir un gafete sin él.
NameBadge.print(nil, "Robert Johnson", "Procurement")
# => "Robert Johnson - PROCUREMENT"
Incluso el dueño de la fábrica tiene que llevar un gafete en todo momento. Sin embargo, un dueño no tiene un departamento. En este caso, la etiqueta debe imprimir "OWNER" en lugar del nombre del departamento.
Extiende la función NameBadge.print/3. Cuando falte el departamento, asume que el gafete pertenece al dueño de la empresa.
NameBadge.print(204, "Rachel Miller", nil)
# => "[204] - Rachel Miller - OWNER"
Fíjate que es posible que el dueño también sea un empleado nuevo.
NameBadge.print(nil, "Rachel Miller", nil)
# => "Rachel Miller - OWNER"
Regístrate en Exercism para aprender y dominar Elixir con 58 conceptos168 ejercicios y mentoría humana real, todo gratis.