if
y unless
Introducción
Aparte de case
y cond
, Elixir también provee if/2
y unless/2
, los cuales son útiles cuando necesitas verificar solo una condición:
if true do
"This works!"
end
unless true do
"This will never be seen"
end
Si la condición dada a if/2
retorna false
o nil
, el cuerpo dado entre do
y end
no será ejecutado y en cambio retornará nil
. Lo contrario pasa con unless/2
.
Tanto if/2
como unless/2
soportan bloques else
:
if nil do
"This won't be seen"
else
"This will"
end
Nota: Aunque unless/2
soporte un bloque else
, se desaconseja su uso, suela ser más legible si transformas ese unless/2
con bloque else
en un if/2
invirtiendo la condición.
Esto es una buena oportunidad para hablar del alcance de las variables en Elixir. Si cualquier variable es declarada o cambiada dentro de un if
, case
o algún otro constructo similar, la declaración y cambio solo será visible dentro de dicho constructo. Por ejemplo:
x = 1
if true do
x = x + 1
end
x
En los casos, en donde quieras cambiar un valor fuera del alcance, debes retornar el valor modificado desde if
por ejemplo:
In said cases, if you want to change a value, you must return the value from the if
:
x = 1
x =
if true do
x = x + 1
end
x
Llegados a este punto, hemos concluido la introducción a los constructos fundamentales para flujo de control en Elixir.