Курс языка программирования 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 тест по содержанию этой темы.
Навигация по курсу
← Ленивые и бесконечные последовательности | Тест — Оператор последовательности →
💪 Или перейдите сразу к упражнениям этого раздела.