Cursus Raku / Geavanceerd / Besturingsstructuren / given en
when
Matching op bereiken, typen en voorwaarden
Een when-blok vergelijkt niet alleen op gelijkheid. Het
voert een smart match uit tussen het topic en de waarde die je
opgeeft, zodat je kunt matchen op bereiken, typen en voorwaarden, niet
alleen op enkele waarden.
Bereiken
Een bereik matcht wanneer het topic erin valt. Dit maakt
given/when een natuurlijke keuze voor het
groeperen van getallen in banden:
my $score = 75;
given $score {
when 90..100 { say 'A' }
when 80..89 { say 'B' }
when 70..79 { say 'C' }
default { say 'F' }
}De waarde 75 valt in het bereik 70..79, dus
het programma drukt af:
CTypen
Een type matcht wanneer het topic van dat type is. Hiermee kun je vertakken op basis van wat voor soort waarde je hebt:
my $value = 'Raku';
given $value {
when Int { say 'an integer' }
when Str { say 'a string' }
}Omdat $value een string bevat, drukt het programma
af:
a stringVoorwaarden
Je kunt ook direct een vergelijking gebruiken. Binnen de
when is het topic beschikbaar als $_, dus een
voorwaarde zoals $_ < 0 matcht wanneer deze waar is:
my $n = -7;
given $n {
when $_ < 0 { say 'negative' }
when 0 { say 'zero' }
default { say 'positive' }
}Hier matcht de eerste when, en het programma drukt
af:
negativePraktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← given en
when | Quiz —
when →
💪 Of ga direct naar de oefeningen in deze
sectie.