Nil es una palabra inglesa que significa «nada» o «cero». 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 pueden desempeñar un papel similar.
Además de cond, Elixir también proporciona la macro if/2, que es útil cuando necesitas comprobar solo una 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 se encuentran 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 las listas vacías se consideran truthy en Elixir.
En este ejercicio vas a escribir código para imprimir tarjetas identificativas para los empleados de una fábrica. Los empleados tienen un id, un nombre y el nombre de un departamento. Las etiquetas de las tarjetas identificativas 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 de la tarjeta, con el nombre del departamento en mayúsculas.
NameBadge.print(67, "Katherine Williams", "Strategic Communication")
# => "[67] - Katherine Williams - STRATEGIC COMMUNICATION"
Debido a una peculiaridad del sistema informático, a veces los empleados nuevos todavía no tienen un id cuando empiezan a trabajar en la fábrica. Como las tarjetas son obligatorias, recibirán una tarjeta temporal sin el prefijo del id.
Amplía la función NameBadge.print/3. Cuando falte el id, debe imprimir una tarjeta sin él.
NameBadge.print(nil, "Robert Johnson", "Procurement")
# => "Robert Johnson - PROCUREMENT"
Incluso el propietario de la fábrica tiene que llevar una tarjeta en todo momento. Sin embargo, un propietario no tiene departamento. En este caso, la etiqueta debe imprimir "OWNER" en lugar del nombre del departamento.
Amplía la función NameBadge.print/3. Cuando falte el departamento, asume que la tarjeta pertenece al propietario de la empresa.
NameBadge.print(204, "Rachel Miller", nil)
# => "[204] - Rachel Miller - OWNER"
Ten en cuenta que es posible que el propietario sea también 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.