Raku kurss / Padziļināti / Izpildes plūsma / gather un take / Exercises / Kvadrāti

Risinājums: Kvadrāti

Šeit ir iespējams risinājums uzdevumam.

Kods

my @squares = gather for 1..6 {
    take $_ ** 2 if $_ %% 2;
};

say @squares;

🦋 Atrodiet programmu failā squares.raku.

Izvade

[4 16 36]

Komentāri

  1. Nosacījums if $_ %% 2 izlemj, vai ņemt, bet $_ ** 2 izlemj, ko ņemt. Nosacījumu iztur tikai pāra skaitļi 2, 4, 6.

  2. To kvadrāti 4, 16, 36 ir vienīgās vērtības, kas nodotas take, tāpēc gather savāc tieši tās. Filtrēšanu un pārveidošanu apvienot vienā take ir kaut kas tāds, ko vienkāršs map tik tīri izteikt nespēj.

Kursa navigācija

Kvadrāti   |   Vākt līdz pilnam