Raku kurss / Padziļināti / Izpildes plūsma / gather un
take / Exercises / Atkārtot
katru skaitli
Risinājums: Atkārtot katru skaitli
Šeit ir iespējams risinājums uzdevumam.
Kods
my @result = gather for 1..4 -> $n {
take $n for 1..$n;
};
say @result;🦋 Atrodiet programmu failā collect-the-evens.raku.
Izvade
[1 2 2 3 3 3 4 4 4 4]Komentāri
Nekas neliek katrā iterācijā izsaukt
taketieši vienu reizi. Šeit iekšējaistake $n for 1..$nizsauctakedažādu reižu skaitu katrā piegājienā, un tieši šī elastība padaragather/takejaudīgāku par vienkāršumap.Ārējais cikls ar nolūku izmanto nosauktu mainīgo
-> $n. Ja iekšējo ciklu rakstītu ar$_, iekšējaisforpiesaistītu$_savam skaitītājam, un mēs ņemtu skaitītāju, nevis pašreizējo skaitli.gathervienkārši savāc katru paņemto vērtību secībā, tāpēc@resultbeigās satur1, tad divus2, tad trīs3, tad četrus4.