Raku kurss / Padziļināti / Izpildes plūsma / gather un
take / Exercises / Vākt līdz
pilnam
Risinājums: Vākt līdz pilnam
Šeit ir iespējams risinājums uzdevumam.
Kods
my $sum = 0;
my @result = gather for 1..100 {
$sum += $_;
last if $sum > 10;
take $_;
}
say @result;🦋 Atrodiet programmu failā gather-big.raku.
Izvade
[1 2 3 4]Komentāri
Ciklam dots simts skaitļu diapazons — daudz vairāk, nekā tas izmantos. Tas ir labi, jo cikls sevi aptur pats: tiklīdz
$sumpārsniedz10,lastizrauj ārā, un atlikušie skaitļi netiek pat apmeklēti.Bloka iekšienē secībai ir nozīme. Vispirms pieskaitām
$sumun pārbaudām robežu pirms ņemšanas, tāpēc skaitlis, kas summu pārsviež pāri10(šeit5), netiek savākts. Uzkrātā summa sasniedz tieši10pēc4, tāpēc savāktais saraksts ir1, 2, 3, 4.Šī priekšlaicīgā iziešana ar
forir tas, kogather/takevar ungrepnevar:grepvienmēr pārskata visu sarakstu, bet šeit mēs izvēlamies, kad apstāties.