Menu
Coddy logo textTech

Les intervalles dans Case / When

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

Les intervalles excellent au sein de l'instruction case de Ruby. Là où de nombreux langages nécessitent une chaîne de if/elsif avec des opérateurs de comparaison, Ruby vous permet de comparer directement une valeur à des intervalles.

score = 78
grade = case score
        when 90..100 then "A"
        when 80..89  then "B"
        when 70..79  then "C"
        when 60..69  then "D"
        else              "F"
        end
puts grade  # C

En coulisses, when 70..79 utilise l'opérateur === de l'intervalle, ce qui est équivalent à (70..79).include?(score).

La forme case est plus courte, plus facile à lire et plus rapide à écrire qu'une longue structure if/elsif.

challenge icon

Défi

Facile

Lisez une liste d'âges entiers séparés par des virgules. Pour chaque âge, classez-le avec une instruction case en utilisant des plages (ranges) :

  • 0..12: Child
  • 13..19: Teen
  • 20..64: Adult
  • 65 ou plus : Senior
  • Tout le reste (négatif) : ignoré, ne figure pas dans le rapport

Affichez une ligne de décompte pour chaque catégorie non nulle, dans cet ordre fixe : Child, Teen, Adult, Senior. Ignorez les catégories avec zéro personne. Après les décomptes, affichez Skipped: <n>n est le nombre d'âges négatifs (invalides).

Pour l'entrée 5,15,30,70,-3,40,12, la sortie est :

Child: 2
Teen: 1
Adult: 2
Senior: 1
Skipped: 1

Aide-mémoire

Utilisez des plages de valeurs (ranges) dans les instructions case — Ruby effectue la comparaison via === (équivalent à include?) :

score = 78
grade = case score
        when 90..100 then "A"
        when 80..89  then "B"
        when 70..79  then "C"
        when 60..69  then "D"
        else              "F"
        end
puts grade  # C

Essayez vous-même

ages = gets.chomp.split(",").map(&:to_i)

# TODO: classer chaque âge avec case + plages, compter par catégorie, imprimer le rapport
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