Corso di Raku / Programmazione funzionale, concorrente, reattiva e web / Programmazione concorrente / Junction
Autothreading
Quando passi una junction a qualcosa che si aspetta un valore singolo — un confronto o una funzione ordinaria — Raku applica in silenzio quell’operazione a ogni valore dietro la junction e riunisce i risultati in una junction. Questo si chiama autothreading.
Per esempio, sommare a una junction somma a ciascuno dei suoi valori:
my $j = 1 | 2 | 3;
say $j + 10; # any(11, 12, 13)Il + 10 è stato applicato a 1,
2 e 3 separatamente, dando una nuova junction
any any(11, 12, 13).
Con un confronto, il risultato riunito collassa in un unico valore di verità secondo il genere della junction:
say so all(3, 7, 2) > 0; # True — every value is positive
say so all(3, -1, 2) > 0; # False — not all are positive
say so none(1, 2, 3) == 5; # True — none of them is 5L’autothreading è ciò che rende le junction così concise: un unico confronto controlla molti valori. Concettualmente i controlli sono indipendenti, quindi Raku è libero di eseguirli in parallelo — ed è per questo che le junction stanno naturalmente nell’armamentario della concorrenza.
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← Quiz — Junction | Quiz — Autothreading →
💪 Oppure vai direttamente agli esercizi di questa
sezione.