Raku-Kurs / Fortgeschritten / Kontrollfluss

given und when

Wenn ein Programm zwischen mehreren Alternativen wählen muss, kann eine Kette von if- und elsif-Prüfungen lang und repetitiv werden. In dieser Situation ist das given/when-Konstrukt oft übersichtlicher. Es ähnelt der switch-Anweisung aus anderen Sprachen.

Der given-Block nimmt einen Wert entgegen und macht ihn zum Thema — der speziellen Variable $_. Jeder when-Block wird dann mit diesem Thema verglichen, und der erste passende wird ausgeführt:

my $n = 2;

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

Dieses Programm gibt aus:

two

Anders als bei switch in manchen anderen Sprachen gibt es kein Fall-Through: Sobald ein when passt, wird sein Block ausgeführt und der given-Block ist beendet. Die verbleibenden when-Blöcke werden nicht mehr geprüft.

Der default-Block

Ein default-Block wird ausgeführt, wenn keiner der when-Blöcke gepasst hat. Er spielt dieselbe Rolle wie der else-Zweig einer if-Anweisung:

my $n = 5;

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

Da $n weder 1 noch 2 ist, gibt das Programm aus:

many

Ebenfalls in diesem Abschnitt

Praxis

Lösen Sie 1 Quiz zum Inhalt dieses Abschnitts.

Übungen

Dieser Abschnitt enthält 3 Übungen. Sehen Sie sich alle Themen dieses Abschnitts an, bevor Sie mit den Übungen beginnen.

  1. Lebensphase nach Alter
  2. Gerade, ungerade oder null
  3. Nach Typ abgleichen

Kursnavigation

Quiz — LEAVE   |   Bereiche, Typen und Bedingungen abgleichen