Ruby dispose de ce qu'on appelle des expressions de contrôle de flux : elles servent à contrôler la façon dont le programme s'exécute et prennent une valeur truthy ou falsey. Certains opérateurs permettent de créer des valeurs truthy ou falsey : ce sont les opérateurs de comparaison.
Deux expressions de contrôle principales déterminent le code qui sera exécuté et celui qui ne le sera pas. Autrement dit, la branche qui sera suivie.
Ce sont les expressions if et unless.
Les opérateurs de comparaison servent à comparer des valeurs et renvoient une valeur true ou false.
Les opérateurs suivants exigent deux valeurs de même type à comparer.
Si les valeurs ne sont pas du même type, le compilateur lève une erreur.
Voici une liste des opérateurs, avec un exemple où ils renvoient true :
| Méthode | Description | Exemple |
|---|---|---|
| < | inférieur à | 4 < 5 |
| <= | inférieur ou égal à | 4 <= 4 |
| > | supérieur à | 3 > 1 |
| >= | supérieur ou égal à | 2 >= 2 |
Contrairement aux opérateurs déjà mentionnés, les opérateurs d'égalité et de non-égalité peuvent comparer n'importe quel type de valeur.
L'opérateur == sert à vérifier si deux valeurs sont égales, en tenant compte du type de la valeur.
L'opérateur != fonctionne de la même manière, mais il renvoie true si les valeurs sont différentes et false si elles sont égales.
Voici une liste des opérateurs d'égalité et de non-égalité, avec un exemple où ils renvoient true :
| Méthode | Description | Exemple |
|---|---|---|
| == | égal | 4 == 4 |
| != | différent | 5 != 4 |
L'opérateur de comparaison combinée (parfois appelé opérateur vaisseau spatial) est un opérateur de comparaison particulier.
Il est particulier en ce qu'il ne renvoie pas une valeur truthy ou falsey, mais un nombre.
Il s'écrit <=> et sert à comparer 2 valeurs.
Il renvoie 1 si la valeur de gauche est supérieure à celle de droite, -1 si elle lui est inférieure, et 0 si les valeurs sont égales.
1 <=> 2 # => -1
2 <=> 2 # => 0
3 <=> 2 # => 1
if
L'instruction if sert à vérifier si une condition donnée est « truthy » ou « falsey ».
Si la condition est truthy, le code à l'intérieur de l'instruction if s'exécute.
Une instruction if se termine par le mot-clé 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
L'instruction unless fonctionne de façon très similaire à l'instruction if, mais elle exécute le code qu'elle contient si la condition est 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"
else
L'instruction else s'utilise conjointement avec l'instruction if.
L'instruction else est exécutée si la branche if ne l'est pas.
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"
if en cascadeL'instruction elsif s'utilise conjointement avec l'instruction if.
L'instruction elsif est exécutée si la branche if ne l'est pas et si la condition de l'instruction elsif est truthy.
Les instructions elsif peuvent être chaînées, et la première condition truthy est exécutée.
Une instruction else peut aussi se placer à la fin de l'instruction if : elle s'exécute si aucune des instructions précédentes n'a été vraie.
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"
if et unless en suffixeLes instructions if et unless peuvent aussi s'employer comme [suffixe][if-as-suffix] : c'est utile quand on veut exécuter une seule ligne de code si une condition est vraie.
Pour cela, on place l'instruction if ou unless après le code à exécuter.
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