Raku-Kurs / Fortgeschritten / Kontrollfluss / given und
when
Bereiche, Typen und Bedingungen abgleichen
Ein when-Block vergleicht nicht nur auf Gleichheit. Er
führt einen Smart Match zwischen dem Thema und dem angegebenen
Wert durch, sodass du gegen Bereiche, Typen und Bedingungen matchen
kannst, nicht nur gegen einzelne Werte.
Bereiche
Ein Bereich passt, wenn das Thema innerhalb davon liegt. Das macht
given/when zu einer natürlichen Wahl, um
Zahlen in Gruppen einzuteilen:
my $score = 75;
given $score {
when 90..100 { say 'A' }
when 80..89 { say 'B' }
when 70..79 { say 'C' }
default { say 'F' }
}Der Wert 75 liegt im Bereich 70..79, daher
gibt das Programm aus:
CTypen
Ein Typ passt, wenn das Thema von diesem Typ ist. So kannst du anhand der Art des Wertes verzweigen:
my $value = 'Raku';
given $value {
when Int { say 'an integer' }
when Str { say 'a string' }
}Da $value einen String enthält, gibt das Programm
aus:
a stringBedingungen
Du kannst auch direkt einen Vergleich verwenden. Innerhalb von
when steht das Thema als $_ zur Verfügung,
sodass eine Bedingung wie $_ < 0 passt, wenn sie wahr
ist:
my $n = -7;
given $n {
when $_ < 0 { say 'negative' }
when 0 { say 'zero' }
default { say 'positive' }
}Hier passt das erste when, und das Programm gibt
aus:
negativePraxis
Lösen Sie 1 Quiz zum Inhalt dieses Themas.
Kursnavigation
← given und
when | Quiz —
when →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.