Курс Raku / Розширені /
Порядок виконання / gather та
take / Вправи / Повторити
кожне число
Розв’язання: Повторити кожне число
Ось один із можливих варіантів розв’язання задачі.
Код
my @result = gather for 1..4 -> $n {
take $n for 1..$n;
};
say @result;🦋 Вихідний код можна знайти у файлі collect-the-evens.raku.
Вивід
[1 2 2 3 3 3 4 4 4 4]Коментарі
Ніщо не змушує робити рівно один
takeна ітерацію. Тут внутрішнійtake $n for 1..$nвиконуєtakeрізну кількість разів на кожному проході — саме та гнучкість, яка робитьgather/takeпотужнішим за звичайнийmap.Зовнішній цикл навмисно використовує іменовану змінну
-> $n. Якби ми записали внутрішній цикл через$_, внутрішнійforперепризначив би$_на власний лічильник, і ми брали б лічильник замість поточного числа.gatherпросто збирає по порядку кожне взяте значення, тож у@resultопиняються1, потім дві2, потім три3, потім чотири4.