Praktische Anwendungsfälle
Strukturierte Daten parsen
Praktische Anwendungsfälle ist eine kostenlose Ruby Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Ruby Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Pattern Matching überzeugt
Pattern Matching spielt seine Stärken bei der Verarbeitung strukturierter Daten aus: bei API-Antworten, Konfigurationsbäumen und geparsten Dateien. Es ersetzt verschachtelte Prüfungen mit if/dig durch einen einzigen lesbaren Ausdruck.
require 'json'
resp = JSON.parse('{"ok":true,"data":42}', symbolize_names: true)
case resp
in { ok: true, data: }
puts(data)
endAPI-Erfolge und -Fehler behandeln
Gleichen Sie unterschiedliche Antwortstrukturen in getrennten Zweigen ab und extrahieren Sie für jede die passenden Felder.
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' }))Kommandozeilenargumente parsen
Gleichen Sie ein Array von Argumenten ab, um Befehle übersichtlich weiterzuleiten.
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']))Die Struktur eines Datensatzes validieren
Verwenden Sie ein Pattern, um vor der Verarbeitung sicherzustellen, dass ein Datensatz die erforderlichen Felder und Typen enthält.
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 }))Verschachtelte Konfiguration zerlegen
Extrahieren Sie tief verschachtelte Konfigurationswerte mit einem einzigen Match, statt verkettete Nachschlagevorgänge zu verwenden.
cfg = { server: { host: 'localhost', port: 8081 } }
case cfg
in { server: { host:, port: } }
puts("#{host}:#{port}")
endTagged Unions
Ein gängiges funktionales Muster: Daten werden durch einen Typ-Tag gekennzeichnet und anhand dieses Tags weitergeleitet.
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 }))Matching mit deconstruct
Benutzerdefinierte Objekte können abgeglichen werden, wenn sie deconstruct definieren (für Array-Patterns). Struct erledigt dies automatisch.
Point = Struct.new(:x, :y)
case Point.new(1, 2)
in [x, y]
puts("#{x},#{y}")
endMatching mit deconstruct_keys
Definieren Sie deconstruct_keys, um Hash-Patterns zu unterstützen. Auch Struct stellt diese Methode bereit und ermöglicht dadurch das Matching nach Namen.
Point = Struct.new(:x, :y)
case Point.new(3, 4)
in { x:, y: }
puts("x=#{x} y=#{y}")
endKlasse mit Pattern
Kombinieren Sie ein Typpattern mit einem Hash-Pattern, um eine bestimmte Klasse und ihre Felder abzugleichen.
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")
endSichere Fallbacks
Geben Sie immer ein else an, wenn eine Eingabe möglicherweise nicht passt. So wird eine Ausnahme in eine kontrollierte Behandlung umgewandelt.
def parse(data)
case data
in { id: Integer => id }
"id #{id}"
else
'unrecognized'
end
end
puts(parse({ name: 'x' }))Alles zusammenführen
Ein realistischer Ablauf: JSON parsen, seine Struktur abgleichen, sie mit einem Guard validieren und anschließend handeln – alles in einem übersichtlichen Ausdruck.
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}")
endKurzer Check
Welche Methode muss eine benutzerdefinierte Klasse definieren, um Hash-Pattern-Matching wie in { x:, y: } zu unterstützen?
Zusammenfassung: Praktische Anwendungsfälle
Sie haben Pattern Matching auf reale Probleme angewendet:
- API-Antworten und Befehle weiterleiten
- Die Struktur von Datensätzen mit Guards validieren
- Verschachtelte Konfigurationen und Tagged Unions zerlegen
deconstruct/deconstruct_keysfür benutzerdefinierte Objekte- Für sichere Fallbacks immer ein
elsehinzufügen
Sie haben den Ruby-Kurs zu Pattern Matching abgeschlossen.
case { type: 'circle', r: 2 }
in { type: 'circle', r: } then puts(3.14 * r * r)
endHäufig gestellte Fragen
Ist die Lektion „Praktische Anwendungsfälle“ kostenlos?
Ja — der vollständige Text von „Praktische Anwendungsfälle“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Ruby Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Praktische Anwendungsfälle“?
Strukturierte Daten parsen Du übst Ruby Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Ruby Academy zu starten?
Keine Vorkenntnisse erforderlich. Ruby Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Praktische Anwendungsfälle“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Ruby Academy-Lektion Code schreiben und ausführen?
Ja. Jede Ruby Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- case/in-Grundlagen
- Array- und Hash-Patterns
- Find-Patterns und Guards
- Praktische Anwendungsfälle