while

Un while exécute son corps tant que sa condition est vraie.

while une_condition
  faire_cela
end

On commence par tester la condition, et si elle est vraie, le corps est exécuté. Ainsi, le corps peut ne jamais être exécuté.

Le type du while est toujours Nil.

Similaire à un if, si la condition d'un while est une variable, la variable est garantie pour ne pas être nil dans le corps. Si la condition est un test var.is_a?(Type), var est garantie pour être de type Type dans le corps. Et si la condition est var.responds_to?(:method), var est garanti d'être d'un type qui répond à cette méthode.

Le type d'une variable après un while dépend du type qu'elle avait avant le while et du type qu'elle avait avant de quitter le corps du while:

a = 1
while une_condition
  # a : Int32 | String
  a = "hello"
  # a : String
  a.size
end
# a : Int32 | String

Vérifier la condition avant la fin d'une boucle (loop)

Si vous avez besoin d'exécuter le corps au moins une fois avant de vérifier une condition de sortie, vous pouvez faire:

while true
  faire_quelque_chose
  break if une_condition
end

Ou utiliser loop, disponible depuis la librairie standard:

loop do
  faire_quelque_chose
  break if une_condition
end

results matching ""

    No results matching ""