Corso di Raku / Programmazione funzionale, concorrente, reattiva e web / Programmazione reattiva / react e whenever
whenever e when
La forma di un blocco react può sembrare familiare. Un
blocco esterno che contiene parecchi blocchi interni, ciascuno che
agisce sull’argomento corrente $_, è esattamente il modo in
cui si scrive given/when.
Se avessi una singola lettura di temperatura invece di un intero flusso
di esse, vi ti dirameresti così:
given $temperature {
when 18 { say 'cool' }
when 21 { say 'warm' }
}La somiglianza con react/whenever è reale,
ma i due fanno lavori molto diversi:
given/whengestisce un valore, adesso.givenimposta$_a un unico valore; ogniwhenlo mette alla prova ($_ ~~ 18), gira la prima corrispondenza e il blocco è finito. È una condizione ordinaria e sincrona.react/whenevergestisce molti valori, nel tempo. Unwhenevernon mette alla prova$_contro uno schema: si abbona a un supply, e il suo corpo gira per ogni valore che quel supply emette, quando quel valore arriva. Tutti iwheneversono vivi insieme, ereactcontinua a bloccare finché ognuno dei loro supply non è finito.
Quindi when chiede «questo unico valore corrisponde?»,
mentre whenever dice «per ogni valore che questo flusso
produrrà mai, fai questo». Stesso scheletro, vite molto diverse: una
diramazione presa una volta sola, contro una reazione che gira ancora e
ancora man mano che gli eventi arrivano.
Navigazione del corso
← Supply definiti all’esterno | Due timer →
💪 Oppure vai direttamente agli esercizi di questa
sezione.