Motifs de recherche et gardes
Conditions dans les correspondances
Motifs de recherche et gardes est une leçon Ruby Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Ruby Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Ruby Academy comprend 4 leçons au total.
Conditions de garde
Ajoutez une garde if ou unless à un motif. La branche ne correspond que si le motif et la condition sont tous deux vérifiés.
case 7
in Integer => n if n.odd?
puts 'odd integer'
endLes gardes utilisent les variables liées
La garde peut faire référence aux variables liées par le motif, ce qui permet d’exprimer des conditions détaillées sur les données correspondantes.
case [4, 9]
in [a, b] if a < b
puts 'ascending pair'
endGardes avec unless
Une garde unless correspond lorsque la condition est fausse, à l’inverse de if.
case 0
in Integer => n unless n.positive?
puts 'zero or negative'
endPlusieurs branches avec garde
Combinez des gardes entre les branches pour construire une chaîne de décision claire.
def grade(score)
case score
in Integer => s if s >= 90 then 'A'
in Integer => s if s >= 70 then 'B'
else 'C'
end
end
puts(grade(85))Motifs de recherche
Un motif de recherche [*, x, *] parcourt un tableau à la recherche d’un sous-motif n’importe où à l’intérieur, avec des opérateurs de collecte aux deux extrémités.
case [1, 2, 3, 4]
in [*, 3, *]
puts 'contains a 3'
endLiaison dans une recherche
L’élément correspondant dans un motif de recherche peut être lié, ce qui capture la valeur trouvée.
case [10, 20, 30]
in [*, x, *] if x > 25
puts("found #{x}")
endCapturer le contexte environnant
Les deux opérateurs de collecte d’un motif de recherche peuvent recevoir un nom pour capturer les éléments situés avant et après la correspondance.
case [1, 2, 99, 4, 5]
in [*before, 99, *after]
p before
p after
endRechercher un élément d’un type donné
Les motifs de recherche s’associent aux motifs de type pour localiser le premier élément d’un type donné.
case [1, 'hi', 2]
in [*, String => word, *]
puts(word)
endGardes ou motifs
Exprimez dans le motif tout ce qui peut l’être de manière structurelle, et utilisez les gardes uniquement pour les conditions que les motifs ne peuvent pas exprimer, comme les comparaisons numériques ou les appels de méthode.
case { role: 'admin', age: 40 }
in { role: 'admin', age: } if age >= 18
puts 'adult admin'
endCombiner recherche et garde
Les motifs de recherche et les gardes permettent de poser ensemble la question suivante : un élément satisfait-il cette condition ?
numbers = [3, 5, 8, 11]
case numbers
in [*, n, *] if n.even?
puts("first even-ish hit: #{n}")
endOrdre des branches
Les branches sont évaluées de haut en bas ; la première correspondance l’emporte. Placez les motifs protégés les plus spécifiques avant les motifs généraux.
case 100
in Integer => n if n > 50 then puts 'big'
in Integer then puts 'small'
endVérification rapide
Que fait le motif de recherche [*, x, *] ?
Récapitulatif : motifs de recherche et gardes
Vous avez ajouté des conditions et une recherche à la correspondance :
- Les gardes
if/unlessaffinent un motif - Les gardes peuvent utiliser des variables liées
- Les motifs de recherche
[*, x, *]recherchent n’importe où - Les deux opérateurs de collecte peuvent être nommés pour capturer le contexte environnant
- La première branche correspondante l’emporte, l’ordre est donc important
case [1, 7, 3]
in [*, x, *] if x > 5 then puts x
endQuestions Fréquemment Posées
La leçon « Motifs de recherche et gardes » est-elle gratuite ?
Oui — le texte complet de « Motifs de recherche et gardes » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Ruby Academy, passe à CoddyKit PRO. Le cours Ruby Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Motifs de recherche et gardes » ?
Conditions dans les correspondances Tu pratiques Ruby Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Ruby Academy ?
Aucune expérience préalable n'est requise. Ruby Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Motifs de recherche et gardes » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Ruby Academy ?
Oui. Chaque leçon Ruby Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Bases de case/in
- Motifs de tableaux et de hachages
- Motifs de recherche et gardes
- Cas d’utilisation pratiques