Ruby tiene lo que se conoce como expresiones de control de flujo; estas se usan para controlar la forma en que se ejecutará el programa y toman un valor truthy o falsey. Existen operadores que se pueden usar para crear valores truthy o falsey; estos se conocen como operadores de comparación.
Hay dos expresiones de control principales que se usan para controlar qué código se ejecutará y qué código no. Es decir, cuál de las ramas se ejecutará.
Esas dos son: la expresión if y la expresión unless.
Los operadores de comparación se usan para comparar valores y devolver un valor true o false.
Los siguientes operadores requieren que se comparen dos valores del mismo tipo.
Si los valores no son del mismo tipo, el compilador lanzará un error.
Aquí tienes una lista de los operadores y un ejemplo de cuándo dan un valor true:
| Método | Descripción | Ejemplo |
|---|---|---|
| < | menor que | 4 < 5 |
| <= | menor o igual que | 4 <= 4 |
| > | mayor que | 3 > 1 |
| >= | mayor o igual que | 2 >= 2 |
Los operadores de igualdad y desigualdad se pueden usar para comparar cualquier tipo de valor, a diferencia de los operadores ya mencionados.
El operador == se usa para comprobar si dos valores son iguales, y eso incluye comprobar el tipo del valor.
El != funciona de la misma manera, pero devolverá true si los valores no son iguales y false si son iguales.
Aquí tienes una lista de los operadores de igualdad y desigualdad y un ejemplo de cuándo dan un valor true:
| Método | Descripción | Ejemplo |
|---|---|---|
| == | igual | 4 == 4 |
| != | distinto | 5 != 4 |
El operador de comparación combinado (a veces llamado operador nave espacial) es un operador de comparación especial.
Es especial en el sentido de que no devuelve un valor truthy o falsey, sino que devuelve un número.
Se escribe como <=> y se usa para comparar 2 valores.
Devolverá 1 si el valor de la izquierda es mayor que el de la derecha, -1 si el valor de la izquierda es menor que el de la derecha, y 0 si los valores son iguales.
1 <=> 2 # => -1
2 <=> 2 # => 0
3 <=> 2 # => 1
El condicional if se usa para comprobar si una condición dada es «truthy» o «falsey».
Si la condición es truthy, se ejecutará el código que está dentro del condicional if.
Un condicional if termina con la palabra clave end.
value = 1
if value == 1
"1 is equal to 1"
end
# => "1 is equal to 1"
if value > 2
"1 is greater than 2"
end
# => nil
El condicional unless funciona de manera muy similar al condicional if, pero ejecutará el código que está dentro del condicional unless si la condición es falsey.
value = 1
unless value == 1
"1 is not equal to 1"
end
# => nil
unless value > 2
"1 is not greater than 2"
end
# => "1 is not greater than 2"
El condicional else se puede usar junto con el condicional if.
El condicional else se ejecutará si no se ejecuta la rama if.
value = 1
if value == 1
"1 is equal to 1"
else
"1 is not equal to 1"
end
# => "1 is equal to 1"
if value > 2
"1 is greater than 2"
else
"1 is not greater than 2"
end
# => "1 is not greater than 2"
El condicional elsif se puede usar junto con el condicional if.
El condicional elsif se ejecutará si no se ejecuta la rama if y la condición del condicional elsif es truthy.
Los condicionales elsif se pueden encadenar y se ejecutará la primera condición que sea truthy.
También puede haber un condicional else al final del condicional if, que se ejecutará si ninguna de las condiciones anteriores fue verdadera.
value = 1
if value == 0
"1 is equal to 0"
elsif value > 2
"1 is greater than 2"
else
"1 is not equal to 0 and 1 is not greater than 2"
end
# => "1 is not equal to 0 and 1 is not greater than 2"
El condicional if y el condicional unless también se pueden usar como [sufijo][if-as-suffix]; esto es útil cuando quieres ejecutar una sola línea de código si una condición es verdadera. Se hace colocando el condicional if o unless después del código que quieres ejecutar.
value = 1
"1 is equal to 1" if value == 1
# => 1 is equal to 1
"1 is not equal to 1" unless value == 1
# => nil