Ruby tiene las llamadas expresiones de control de flujo; se utilizan para controlar la forma en que se ejecutará el programa y toman un valor que se evalúa como verdadero o falso. Hay operadores que se pueden usar para crear valores que se evalúan como verdaderos o falsos; se conocen como operadores de comparación.
Hay dos expresiones de control principales que se usan para controlar qué código se ejecutará y cuál no. Es decir, qué rama concreta se ejecutará.
Esas dos son: if y la expresión unless.
Los operadores de comparación se utilizan para comparar valores y devolver un valor true o false.
Los siguientes operadores requieren dos valores del mismo tipo para compararse.
Si los valores no son del mismo tipo, el intérprete lanzará un error.
Aquí tienes una lista de los operadores y un ejemplo de cuándo dan un valor true:
| Operador | 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, lo que incluye comprobar el tipo del valor.
El operador != funciona de la misma manera, pero devuelve 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:
| Operador | 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 porque no devuelve un valor que se evalúe como verdadero o falso, sino un número.
Se escribe como <=> y se usa para comparar 2 valores.
Devuelve 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
if
La instrucción if se utiliza para comprobar si una condición dada es «verdadera» o «falsa».
Si la condición es verdadera, se ejecutará el código dentro de la instrucción if.
Una instrucción 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
unless
La instrucción unless funciona de manera muy similar a la instrucción if, pero ejecutará el código dentro de la instrucción unless si la condición es falsa.
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"
else
La instrucción else se puede usar junto con la instrucción if.
La instrucción 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"
La instrucción elsif se puede usar junto con la instrucción if.
La instrucción elsif se ejecutará si no se ejecuta la rama if y la condición de la instrucción elsif es verdadera.
Las instrucciones elsif se pueden encadenar y se ejecutará la primera condición que sea verdadera.
También puede haber una instrucción else al final de la instrucción if, que se ejecutará si ninguna de las instrucciones anteriores ha sido 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"
Las instrucciones if y 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 la instrucción 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