Find-Patterns und Guards
Bedingungen in Matches
Find-Patterns und Guards ist eine kostenlose Ruby Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.
Guard-Bedingungen
Fügen Sie einem Pattern einen Guard mit if oder unless hinzu. Der Zweig wird nur ausgeführt, wenn sowohl das Pattern als auch die Bedingung erfolgreich sind.
case 7
in Integer => n if n.odd?
puts 'odd integer'
endGuards verwenden gebundene Variablen
Der Guard kann auf Variablen verweisen, die vom Pattern gebunden wurden. So können Sie komplexe Bedingungen für die abgeglichenen Daten formulieren.
case [4, 9]
in [a, b] if a < b
puts 'ascending pair'
endunless-Guards
Ein unless-Guard greift, wenn die Bedingung falsch ist – also als Umkehrung von if.
case 0
in Integer => n unless n.positive?
puts 'zero or negative'
endMehrere Zweige mit Guards
Kombinieren Sie Guards über mehrere Zweige hinweg, um eine übersichtliche Entscheidungsfolge aufzubauen.
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))Find-Patterns
Ein Find-Pattern [*, x, *] durchsucht ein Array nach einem Unterpattern, das sich beliebig innerhalb des Arrays befindet, wobei an beiden Enden Splats stehen.
case [1, 2, 3, 4]
in [*, 3, *]
puts 'contains a 3'
endInnerhalb eines Find-Patterns binden
Das abgeglichene Element in einem Find-Pattern kann gebunden werden, um den gefundenen Wert zu erfassen.
case [10, 20, 30]
in [*, x, *] if x > 25
puts("found #{x}")
endUmgebende Elemente erfassen
Beide Splats in einem Find-Pattern können benannt werden, um die Elemente vor und nach dem Treffer zu erfassen.
case [1, 2, 99, 4, 5]
in [*before, 99, *after]
p before
p after
endEin typisiertes Element finden
Find-Patterns lassen sich mit Typpatterns kombinieren, um das erste Element eines bestimmten Typs zu finden.
case [1, 'hi', 2]
in [*, String => word, *]
puts(word)
endGuards vs. Patterns
Drücken Sie im Pattern alles aus, was sich strukturell beschreiben lässt, und verwenden Sie Guards nur für Bedingungen, die Patterns nicht abbilden können, etwa numerische Vergleiche oder Methodenaufrufe.
case { role: 'admin', age: 40 }
in { role: 'admin', age: } if age >= 18
puts 'adult admin'
endFind-Pattern und Guard kombinieren
Mit Find-Patterns und Guards können Sie gemeinsam fragen: Erfüllt irgendein Element diese Bedingung?
numbers = [3, 5, 8, 11]
case numbers
in [*, n, *] if n.even?
puts("first even-ish hit: #{n}")
endReihenfolge der Zweige
Die Zweige werden von oben nach unten geprüft; der erste Treffer gewinnt. Platzieren Sie spezifischere Patterns mit Guards vor allgemeineren Patterns.
case 100
in Integer => n if n > 50 then puts 'big'
in Integer then puts 'small'
endKurzer Check
Was bewirkt das Find-Pattern [*, x, *]?
Zusammenfassung: Find-Patterns und Guards
Sie haben dem Matching Bedingungen und Suchfunktionen hinzugefügt:
- Guards mit
if/unlessverfeinern ein Pattern - Guards können gebundene Variablen verwenden
- Find-Patterns wie
[*, x, *]suchen an beliebiger Stelle - Beide Splats können benannt werden, um die Umgebung zu erfassen
- Der erste passende Zweig gewinnt, daher ist die Reihenfolge wichtig
case [1, 7, 3]
in [*, x, *] if x > 5 then puts x
endHäufig gestellte Fragen
Ist die Lektion „Find-Patterns und Guards“ kostenlos?
Ja — der vollständige Text von „Find-Patterns und Guards“ 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 „Find-Patterns und Guards“?
Bedingungen in Matches 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 3 von 4.
Wie lange dauert die Lektion „Find-Patterns und Guards“?
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