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 # weekendC'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
endChoisissez les formes qui rendent chaque branche facile à lire d'un coup d'œil.
Défi
FacileLisez 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 suivantsa, e, i, o, u(insensible à la casse, convertissez d'abord l'entrée en minuscules)digit: l'entrée est l'un des suivants0..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
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 Pipeline8Prise de décision avancée
Case avec Classes & Regexwhen à valeurs multiplesOpérateur ternaireif / unless en ligneRécapitulatif - Classificateur de notes