Corso di Raku / Avanzato / Controllo di flusso

given e when

Quando un programma deve scegliere tra diverse alternative, una catena di controlli if e elsif può diventare lunga e ripetitiva. In questa situazione, il costrutto given/when è spesso più chiaro. È simile all’istruzione switch presente in altri linguaggi.

Il blocco given prende un valore e lo rende il topic — la variabile speciale $_. Ogni blocco when viene poi confrontato con quel topic, e il primo che corrisponde viene eseguito:

my $n = 2;

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

Questo programma stampa:

two

A differenza dello switch in alcuni altri linguaggi, non c’è fall-through: non appena un when corrisponde, il suo blocco viene eseguito e il blocco given è terminato. I blocchi when rimanenti non vengono testati.

Il blocco default

Un blocco default viene eseguito quando nessuno dei blocchi when ha trovato corrispondenza. Svolge lo stesso ruolo del ramo else di un’istruzione if:

my $n = 5;

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

Poiché $n non è né 12, il programma stampa:

many

Anche in questa sezione

Pratica

Risolvi 1 quiz sul contenuto di questa sezione.

Esercizi

Questa sezione contiene 3 esercizi. Guarda tutti gli argomenti di questa sezione prima di iniziare gli esercizi.

  1. Fase della vita dall’età
  2. Pari, dispari o zero
  3. Matching per tipo

Quiz — LEAVE   |   Matching di intervalli, tipi e condizioni