0Pricing
Ruby Academy · Leçon

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'
end

Les 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'
end

Gardes 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'
end

Plusieurs 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'
end

Liaison 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}")
end

Capturer 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
end

Rechercher 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)
end

Gardes 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'
end

Combiner 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}")
end

Ordre 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'
end

Vé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 / unless affinent 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
end

Questions 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

  1. Bases de case/in
  2. Motifs de tableaux et de hachages
  3. Motifs de recherche et gardes
  4. Cas d’utilisation pratiques
← Retour à Ruby Academy