⚡ Generatory

Generatory to funkcje które mogą "yield-ować" wartości jedna po drugiej.

Podstawowy generator

// fn* definiuje generator fn* counter(max) { for (i in 1..max) { yield i; } } let gen = counter(5); // Pobierz kolejne wartości print(generatorNext(gen)); // {value: 1, done: false} print(generatorNext(gen)); // {value: 2, done: false} // Zbierz pozostałe let rest = generatorCollect(gen); // [3, 4, 5]

Nieskończony generator

fn* naturalNumbers() { let n = 1; while (true) { yield n; n = n + 1; } } let nums = naturalNumbers(); print(generatorNext(nums).value); // 1 print(generatorNext(nums).value); // 2 print(generatorNext(nums).value); // 3

Generator Fibonacci

fn* fibonacci() { let a = 0, b = 1; while (true) { yield a; let temp = a + b; a = b; b = temp; } } let fib = fibonacci(); repeat 10 { print(generatorNext(fib).value); } // 0, 1, 1, 2, 3, 5, 8, 13, 21, 34