0Pricing
Ruby Academy · Leçon

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

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

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

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

Classe 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")
end

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

Vé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_keys pour les objets personnalisés
  • Ajout systématique d’une branche else pour 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)
end

Questions 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

  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