Cas d’utilisation pratiques
Analysez des données structurées
Cas d’utilisation pratiques est une leçon Ruby Academy gratuite sur CoddyKit. Ceci est la leçon 4 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.
Pourquoi la correspondance de motifs est efficace
La correspondance de motifs est particulièrement efficace pour traiter des données structurées : réponses d’API, arborescences de configuration et fichiers analysés. Elle remplace les vérifications imbriquées if/dig par une expression lisible.
require 'json'
resp = JSON.parse('{"ok":true,"data":42}', symbolize_names: true)
case resp
in { ok: true, data: }
puts(data)
endGestion des réussites et des erreurs d’API
Faites correspondre les différentes formes de réponse dans des branches distinctes, en extrayant les champs appropriés pour chacune.
def handle(resp)
case resp
in { status: 'ok', result: }
"got #{result}"
in { status: 'error', message: }
"error: #{message}"
end
end
puts(handle({ status: 'error', message: 'bad input' }))Analyse des arguments de commande
Faites correspondre un tableau d’arguments pour distribuer les commandes proprement.
def run(args)
case args
in ['add', a, b]
a.to_i + b.to_i
in ['echo', *rest]
rest.join(' ')
end
end
puts(run(['add', '3', '4']))
puts(run(['echo', 'hi', 'there']))Validation de la structure d’un enregistrement
Utilisez un motif pour vérifier qu’un enregistrement possède les champs et les types requis avant de le traiter.
def valid?(rec)
case rec
in { name: String, age: Integer => a } if a >= 0
true
else
false
end
end
puts(valid?({ name: 'Ada', age: 36 }))
puts(valid?({ name: 'X', age: -1 }))Déconstruction d’une configuration imbriquée
Extrayez les valeurs profondes de la configuration dans une seule correspondance au lieu d’enchaîner les recherches.
cfg = { server: { host: 'localhost', port: 8081 } }
case cfg
in { server: { host:, port: } }
puts("#{host}:#{port}")
endUnions étiquetées
Un motif fonctionnel courant : des données étiquetées par leur type, puis distribuées selon cette étiquette.
def area(shape)
case shape
in { type: 'circle', r: }
(3.14 * r * r).round(2)
in { type: 'rect', w:, h: }
w * h
end
end
puts(area({ type: 'rect', w: 3, h: 4 }))Correspondance avec deconstruct
Les objets personnalisés peuvent être utilisés dans une correspondance s’ils définissent deconstruct (pour les motifs de tableaux). Struct le fait automatiquement.
Point = Struct.new(:x, :y)
case Point.new(1, 2)
in [x, y]
puts("#{x},#{y}")
endCorrespondance avec deconstruct_keys
Définissez deconstruct_keys pour prendre en charge les motifs de hachage. Struct fournit également cette méthode, ce qui permet la correspondance nommée.
Point = Struct.new(:x, :y)
case Point.new(3, 4)
in { x:, y: }
puts("x=#{x} y=#{y}")
endClasse avec motif
Combinez un motif de type avec un motif de hachage pour faire correspondre une classe spécifique et ses champs.
User = Struct.new(:name, :admin, keyword_init: true)
case User.new(name: 'Ada', admin: true)
in User(admin: true, name:)
puts("#{name} is an admin")
endSolutions de repli sûres
Prévoyez toujours une branche else lorsque l’entrée peut ne pas correspondre, afin de transformer l’exception en gestion maîtrisée.
def parse(data)
case data
in { id: Integer => id }
"id #{id}"
else
'unrecognized'
end
end
puts(parse({ name: 'x' }))Mise en pratique
Un flux réaliste : analyser du JSON, faire correspondre sa structure, le valider avec une garde, puis agir, le tout dans une expression claire.
require 'json'
event = JSON.parse('{"kind":"purchase","amount":150}', symbolize_names: true)
case event
in { kind: 'purchase', amount: Integer => amt } if amt > 100
puts("big purchase: #{amt}")
in { kind: 'purchase', amount: }
puts("purchase: #{amount}")
endVérification rapide
Quelle méthode une classe personnalisée doit-elle définir pour prendre en charge la correspondance de hachage avec un motif tel que in { x:, y: } ?
Récapitulatif : cas d’utilisation pratiques
Vous avez appliqué la correspondance de motifs à des problèmes concrets :
- Distribution des réponses d’API et des commandes
- Validation de la structure des enregistrements avec des gardes
- Déconstruction de configurations imbriquées et d’unions étiquetées
deconstruct/deconstruct_keyspour les objets personnalisés- Ajout systématique d’une branche
elsepour des solutions de repli sûres
Vous avez terminé le cours Ruby sur la correspondance de motifs.
case { type: 'circle', r: 2 }
in { type: 'circle', r: } then puts(3.14 * r * r)
endQuestions Fréquemment Posées
La leçon « Cas d’utilisation pratiques » est-elle gratuite ?
Oui — le texte complet de « Cas d’utilisation pratiques » 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 « Cas d’utilisation pratiques » ?
Analysez des données structurées 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 4 sur 4.
Combien de temps prend la leçon « Cas d’utilisation pratiques » ?
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