Corso di Raku / Avanzato / Operatori / Meta-operatori
Meta-operatori di riduzione
Un meta-operatore di riduzione si scrive come un operatore normale
racchiuso tra parentesi quadre, ad esempio [+] o
[*]. Prende una lista di valori e inserisce l’operatore tra
ogni coppia di essi, riducendo l’intera lista a un singolo valore.
Per esempio, [+] somma tutti gli elementi di una
lista:
my @data = 3, 5, 7, 9, 11;
say [+] @data; # 35Il costrutto [+] @data equivale a scrivere l’operatore a
mano:
say 3 + 5 + 7 + 9 + 11; # 35Qualsiasi operatore infisso adatto funziona allo stesso modo. Con
[*] si ottiene il prodotto della lista, quindi applicarlo
all’intervallo 1..$n è un modo pratico per calcolare un
fattoriale:
my $n = 5;
say [*] 1..$n; # 120Qui, l’intervallo 1..$n produce i numeri da 1 a 5, e
[*] li moltiplica: 1 * 2 * 3 * 4 * 5, cioè
5!.
Funziona anche la concatenazione di stringhe. La riduzione
[~] unisce una lista di stringhe in una sola:
my @strings = <neun hundert fünf und zwanzig>;
say [~] @strings; # neunhundertfünfundzwanzigAnche gli operatori di confronto possono essere ridotti.
[<] verifica se i valori sono in ordine strettamente
crescente:
say [<] 1, 2, 3; # TrueRiduzione triangolare
Se si inserisce un backslash all’interno delle parentesi quadre, si ottiene una riduzione triangolare, che conserva tutti i risultati intermedi invece del solo risultato finale:
say [\+] 1..5; # (1 3 6 10 15)Ogni elemento del risultato è una somma parziale: 1, poi
1+2, poi 1+2+3, e così via fino alla somma
dell’intera lista.
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← Meta-operatori | Quiz — Riduzione →
💪 Oppure vai direttamente agli esercizi di questa
sezione.