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 # CEn 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.
Défi
FacileLisez 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:Child13..19:Teen20..64:Adult65ou 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> où 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: 1Aide-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 # CEssayez vous-même
ages = gets.chomp.split(",").map(&:to_i)
# TODO: classer chaque âge avec case + plages, compter par catégorie, imprimer le rapport
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
1Les chaînes de caractères en profondeur
Aperçu des méthodes de chaînesInterpolation de chaînesParcourir les chaînesSplit et JoinRécapitulatif - String Weaver4Blocs, Procs & Lambdas
Qu'est-ce qu'un bloc ?do..end vs AccoladesLe mot-clé yieldParamètres de blocProcs et LambdasRécapitulatif - Itérateur personnalisé7Hashes - Partie 2
Hash.new avec des valeurs par défautItérer sur les HashesHashes imbriquésFusion et transformationRécapitulatif - Compteur de fréquence10Projet - Dossiers étudiants
Présentation du projetAjouter un étudiant2Intervalles
Qu'est-ce qu'un intervalle ?Méthodes d'intervalleLes intervalles dans Case / WhenRécapitulatif - Pratique des intervalles5La puissance d'Enumerable
Select et RejectChaîner MapReduce / Injectcount, all?, any?, none?group_by et partitionsort_by, min_by, max_byRécapitulatif - Data Pipeline