Курс по Raku / Напреднали / Повече за вградените типове / Последователности
Мързеливи и безкрайни последователности
Една последователност не е задължена да изчислява всичките си стойности наведнъж. Последователностите в Raku са мързеливи: всяка стойност се произвежда само когато наистина е необходима. Това прави възможно описването на последователност, която изобщо няма край.
За да напишете безкрайна последователност, използвайте
Inf като крайна точка. Оградете последователността в скоби,
защото ... свързва по-слабо от =:
my $naturals = (1 ... Inf);Без скобите my $naturals = 1 ... Inf ще присвои само
1 на променливата и след това ще създаде последователността
самостоятелно — а изчисляването на безкрайна последователност без
резултат ще блокира програмата.
Нищо не е изчислено все още. Последователността ще предоставя
стойности само когато ги поискате. Методът head взема
първите няколко:
say (1 ... Inf).head(5); # (1 2 3 4 5)Въпреки че последователността е безкрайна, се генерират само първите пет числа. Без мързеливост програма, която се опитва да изгради цялата безкрайна последователност, никога не би завършила.
За крайна последователност методът tail взема стойности
от края:
say (1 ... 100).tail(3); # (98 99 100)Мързеливостта е това, което ви позволява да отделите описанието на последователността от решението колко от нея да използвате.
Навигация в курса
← Тест — Операторът
... | Нечетни числа
→
💪 Или преминете направо към упражненията в този
раздел.