Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Функциональное программирование / Ленивые и бесконечные последовательности

Оператор последовательности

Оператор последовательности ... строит список от начального образца до конечного значения. Дайте ему несколько первых элементов и конечную точку — и он сам сообразит, как ряд продолжается:

say (2, 4 ... 10); # (2 4 6 8 10)

Из 2, 4 он выводит «прибавлять по два» и продолжает, пока не дойдёт до 10. Шаг может идти и вниз:

say (10, 8 ... 2); # (10 8 6 4 2)

Если элементы растут умножением, а не сложением, оператор замечает и это:

say (1, 2, 4 ... 64); # (1 2 4 8 16 32 64)

Здесь каждый член вдвое больше предыдущего, то есть последовательность геометрическая.

Когда правило сложнее, чем оператор может угадать, его можно задать явно — замыканием от предыдущих элементов. Например, явное правило «прибавить шаг»:

say (1, * + 2 ... 9); # (1 3 5 7 9)

Блок * + 2 говорит, как получить следующий элемент из текущего. С этим ... может выразить любую последовательность, которую вы способны описать правилом.

Практика

Пройдите 1 тест по содержанию этой темы.

Навигация по курсу

Ленивые и бесконечные последовательности   |   Тест — Оператор последовательности


💪 Или перейдите сразу к упражнениям этого раздела.