Menu
Coddy logo textTech

Case avec Classes & Regex

Fait partie de la section Logique et Flux du Journey Ruby de Coddy. Leçon 38 sur 56.

Vous avez utilisé case avec des intervalles. La même instruction fonctionne également avec les classes et les expressions régulières : toutes deux via l'opérateur === que when appelle sous le capot.

Associez par classe pour bifurquer selon le type de valeur reçue :

def describe(value)
  case value
  when Integer then "a whole number"
  when Float   then "a decimal"
  when String  then "some text"
  else              "something else"
  end
end

puts describe(42)      # un nombre entier
puts describe(3.14)    # un nombre décimal
puts describe("hi")    # du texte

Effectuez un filtrage par motif (pattern matching) avec une expression régulière pour bifurquer selon la forme d'une chaîne, un numéro de téléphone, un e-mail, une date :

def kind_of(text)
  case text
  when /^\d+$/        then "all digits"
  when /@/            then "looks like an email"
  when /^[A-Z]/       then "starts with a capital"
  else                     "other"
  end
end

C'est beaucoup plus propre qu'une chaîne d'appels is_a? ou match? dans if/elsif.

challenge icon

Défi

Facile

Lisez une seule ligne d'entrée. Utilisez une instruction case pour afficher l'une de ces étiquettes selon ce à quoi l'entrée ressemble :

  • Uniquement des chiffres, number
  • Contient @ : email
  • Commence par une majuscule, name
  • Tout autre cas, unknown

Vérifiez les règles dans l'ordre indiqué (ainsi 123 est number, pas unknown ; kevin@coddy.tech est email ; Alice est name).

Pour l'entrée kevin@coddy.tech, la sortie est email.

Essayez vous-même

input = gets.chomp

# TODO: case input ... when /^\d+$/, /@/, /^[A-Z]/ ... else ... end
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

Entraînez-vous par vous-même : Compilateur Ruby en ligne