Plages dans Case / When
Fait partie de la section Logique et Flux du Journey Ruby de Coddy. Leçon 8 sur 56.
Les plages brillent dans l’instruction case de Ruby. Alors que 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 plages.
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 la plage, qui est équivalent à (70..79).include?(score).
La forme case est plus courte, plus facile à lire et plus rapide à écrire qu’une longue structure en cascade 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 intervalles :
0..12:Child13..19:Teen20..64:Adult65ou plus :Senior- Tout le reste (négatif) : ignoré, ne doit pas apparaître dans le rapport
Affichez une ligne de comptage pour chaque catégorie non nulle, dans cet ordre fixe : Child, Teen, Adult, Senior. Ignorez les catégories ne comptant aucune personne. Après les comptages, affichez Skipped: <n>, où n est le nombre d’âges négatifs (non valides).
Pour l’entrée 5,15,30,70,-3,40,12, la sortie est :
Child: 2
Teen: 1
Adult: 2
Senior: 1
Skipped: 1Essayez vous-même
ages = gets.chomp.split(",").map(&:to_i)
# TODO: classer chaque âge avec case + ranges, 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 - Tisseur de chaînes4Blocs, Procs et Lambdas
Qu'est-ce qu'un bloc ?do..end ou accoladesLe mot-clé yieldParamètres de blocProcs et LambdasRécapitulatif - Itérateur personnalisé7Hashes, 2e partie
Hash.new avec valeurs par défautParcourir les hashesHashes imbriquésFusionner et transformerRécapitulatif - Compteur de fréquences10Projet - Dossiers des étudiants
Présentation du projetAjouter un étudiant2Plages
Qu’est-ce qu’une plage ?Méthodes des plagesPlages dans Case / WhenRécapitulatif - Exercices sur les plages5Puissance des Enumerable
Select et RejectChaînage de MapReduce / Injectcount, all?, any?, none?group_by et partitionsort_by, min_by, max_byRécapitulatif - Pipeline de donnéesEntraînez-vous par vous-même : Compilateur Ruby en ligne