Menu
Coddy logo textTech

when à valeurs multiples

Fait partie de la section Logique et Flux du Journey Ruby de Coddy — leçon 39 sur 56.

Une seule clause when peut correspondre à n'importe laquelle de plusieurs valeurs, séparées par des virgules. La branche s'exécute si le sujet est égal à l'une d'entre elles.

day = "Sat"
kind = case day
       when "Sat", "Sun"                          then "weekend"
       when "Mon", "Tue", "Wed", "Thu", "Fri"  then "weekday"
       end
puts kind   # weekend

C'est beaucoup plus propre que d'enchaîner || dans un if/elsif.

Vous pouvez également mélanger les types de valeurs dans un seul when : chaînes de caractères, plages, motifs regex, ce sont tous simplement des éléments qui répondent à === :

def describe(x)
  case x
  when 0, nil       then "empty"
  when 1..9         then "small"
  when 10..99       then "medium"
  when /^huge:/i    then "flagged huge"
  end
end

Choisissez les formes qui rendent chaque branche facile à lire d'un coup d'œil.

challenge icon

Défi

Facile

Lisez un seul caractère (une ligne d'entrée). Utilisez un case avec des branches when à valeurs multiples pour afficher l'un des éléments suivants :

  • vowel : l'entrée est l'un des suivants a, e, i, o, u (insensible à la casse, convertissez d'abord l'entrée en minuscules)
  • digit : l'entrée est l'un des suivants 0..9 (utilisez une plage)
  • punctuation : l'entrée est l'un des suivants ., ,, !, ?
  • other : tout autre chose

Traitez l'entrée comme une chaîne d'un seul caractère. Testez la branche digit en utilisant une plage comme "0".."9".

Pour l'entrée E, la sortie est vowel ; pour 7, c'est digit ; pour !, c'est punctuation.

Essayez vous-même

ch = gets.chomp

# À FAIRE : case ch.downcase ... avec des branches 'when' à plusieurs valeurs
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux