Cursus Raku / Geavanceerd / Besturingsstructuren

given en when

Wanneer een programma moet kiezen uit meerdere alternatieven, kan een keten van if- en elsif-controles lang en repetitief worden. In die situatie is de given/when-constructie vaak duidelijker. Het lijkt op het switch-statement dat in andere talen voorkomt.

Het given-blok neemt een waarde en maakt deze het topic — de speciale variabele $_. Elk when-blok wordt vervolgens vergeleken met dat topic, en het eerste dat overeenkomt wordt uitgevoerd:

my $n = 2;

given $n {
    when 1 { say 'one' }
    when 2 { say 'two' }
    when 3 { say 'three' }
}

Dit programma drukt af:

two

In tegenstelling tot een switch in sommige andere talen, is er geen doorval (fall-through): zodra een when overeenkomt, wordt het blok uitgevoerd en is het given-blok afgelopen. De overige when-blokken worden niet getest.

Het default-blok

Een default-blok wordt uitgevoerd wanneer geen van de when-blokken overeenkomt. Het speelt dezelfde rol als de else-tak van een if-statement:

my $n = 5;

given $n {
    when 1 { say 'one' }
    when 2 { say 'two' }
    default { say 'many' }
}

Omdat $n noch 1 noch 2 is, drukt het programma af:

many

Ook in deze sectie

Praktijk

Maak de 1 quiz over de inhoud van deze sectie.

Oefeningen

Deze sectie bevat 3 oefeningen. Bekijk alle onderwerpen van deze sectie voordat je aan de oefeningen begint.

  1. Levensfase op basis van leeftijd
  2. Even, oneven of nul
  3. Matchen op type

Cursusnavigatie

Quiz — LEAVE   |   Matching op bereiken, typen en voorwaarden