Raku kurss / Funkcionālā, paralēlā, reaktīvā un tīmekļa programmēšana / Funkcionālā programmēšana / Slinkas un bezgalīgas virknes
Bezgalīgas virknes
Aizstājiet gala vērtību ar *, un virkne kļūst
bezgalīga — tai nav pēdējā elementa. Tā kā saraksts ir
slinks, tas ir pilnīgi droši: nekas netiek aprēķināts, kamēr jūs to
nepaņemat.
say (1, 2, 4 ... *).head(5); # (1 2 4 8 16)Divnieka pakāpju rinda turpinās mūžīgi, bet .head(5)
izvelk tikai pirmās piecas. Diapazons 1..* ir vienkāršākā
bezgalīgā virkne — visi veselie skaitļi no viena:
say (1..*).head(3); # (1 2 3)
say (1..*).map(* ** 2).head(4); # (1 4 9 16)Virkni var pat definēt ar tās pašas agrākajiem elementiem. Fibonači virkne, kurā katrs skaitlis ir iepriekšējo divu summa, ir slavena vienrindiņa:
my @fib = 1, 1, * + * ... *;
say @fib[^10]; # (1 1 2 3 5 8 13 21 34 55)Slēgums * + * paņem divus iepriekšējos elementus un tos
saskaita. Virknes glabāšana @fib šeit ir pieņemama, jo
operators ... to atzīmē kā slinku, tāpēc masīvs nemēģina to
visu aprēķināt — tiek radīti tikai tie desmit elementi, ko prasa
@fib[^10].
Īkšķa likums: bezgalīga virkne ir droša, kamēr jūs no tās velkat vienīgi galīgu šķēli.
Prakse
Jūs gaida 1 viktorīna par šī temata saturu.
Kursa navigācija
← Viktorīna — Virknes operators | Viktorīna — Slinkas virknes →
💪 Vai arī dodieties tieši uz šīs sadaļas
vingrinājumiem.