Corso di Raku / Avanzato / Controllo di flusso / gather e
take / Exercises / Raccogliere fino al
pieno
Soluzione: Raccogliere fino al pieno
Ecco una possibile soluzione al compito.
Codice
my $sum = 0;
my @result = gather for 1..100 {
$sum += $_;
last if $sum > 10;
take $_;
}
say @result;🦋 Puoi trovare il codice sorgente nel file gather-big.raku.
Output
[1 2 3 4]Commenti
Al ciclo viene dato un intervallo di cento numeri, molti piu di quanti ne utilizzera. Non e un problema perche il ciclo si interrompe da solo: non appena
$sumsupera10,lastesce e i numeri restanti non vengono mai visitati.L’ordine all’interno del blocco e importante. Prima si aggiunge a
$sume si controlla il limite prima di prendere, cosi il numero che fa superare il totale di10(qui,5) non viene raccolto. Il totale progressivo raggiunge esattamente10dopo4, quindi la lista raccolta e1, 2, 3, 4.Questa uscita anticipata con
fore cio chegather/takepuo fare egrepno:grepscorre sempre l’intera lista, mentre qui si sceglie quando fermarsi.