Ruby Language si, elsif, sinon et fin


Exemple

Ruby propose les expressions if et else attendues pour la logique de branchement, terminées par le mot clé end :

# Simulate flipping a coin
result = [:heads, :tails].sample

if result == :heads
  puts 'The coin-toss came up "heads"'
else
  puts 'The coin-toss came up "tails"'
end

Dans Ruby, les instructions if sont des expressions dont l'évaluation donne une valeur et le résultat peut être affecté à une variable:

status = if age < 18
           :minor
         else
           :adult
         end

Ruby propose également des opérateurs ternaires de style C ( voir ici pour plus de détails ) pouvant être exprimés comme suit:

some_statement ? if_true : if_false  

Cela signifie que l'exemple ci-dessus utilisant if-else peut aussi être écrit comme

status = age < 18 ? :minor : :adult

En outre, Ruby propose le mot-clé elsif qui accepte une expression pour activer une logique de branchement supplémentaire:

label = if shirt_size == :s
          'small'
        elsif shirt_size == :m
          'medium'
        elsif shirt_size == :l
          'large'
        else
          'unknown size'
        end

Si aucune des conditions d'une chaîne if / elsif n'est vraie et qu'il n'y a pas de clause else , l'expression est nulle. Cela peut être utile dans l'interpolation de chaînes, car nil.to_s est la chaîne vide:

"user#{'s' if @users.size != 1}"