Corso di Raku / Avanzato / Controllo di flusso / Prefissi di istruzione

do e il valore di un blocco

Un blocco da solo è un’istruzione, non un’espressione, quindi normalmente non è possibile assegnarlo a una variabile. Il prefisso do trasforma un blocco in un’espressione il cui valore è il valore della sua ultima istruzione:

my $x = do {
    my $a = 3;
    $a + 4;
};

say $x; # 7

All’interno del blocco potete dichiarare variabili, eseguire diverse istruzioni e calcolare un risultato; do restituisce qualunque cosa il blocco produca. Questo è utile quando per produrre un valore servono più espressioni.

do funziona anche davanti alle istruzioni di controllo del flusso, permettendo anche a queste di restituire un valore:

my $sign = do given 5 {
    when * > 0 { 'positive' }
    when * < 0 { 'negative' }
    default    { 'zero' }
};

say $sign; # positive

Qui do given trasforma l’intero given/when in un’espressione che produce positive. Lo stesso funziona con do if e do for. In breve, do è il modo per usare un blocco, o una struttura di controllo, in un punto dove è richiesto un valore.

Pratica

Risolvi 1 quiz sul contenuto di questo argomento.

Prefissi di istruzione   |   Quiz — do


💪 Oppure vai direttamente agli esercizi di questa sezione.