#include <iostream>
#include <z/system/interval.hpp>
int main() {
{
auto total_sum = numbers.reduce([](auto a, auto b) { return a + b; });
("Sum of all numbers = "_zs + total_sum).writeln(std::cout);
}
{
auto numbers = range(10);
auto total_sum = numbers.reduce([](auto a, auto b) { return a + b; });
("Sum of all numbers = "_zs + total_sum).writeln(std::cout);
}
{
auto numbers = range(10);
auto numbers_array = numbers.collect();
("Length of numbers_array = "_zs + numbers_array.length()).writeln(std::cout);
auto count = range(10).count();
("Count of number gen = "_zs + count).writeln(std::cout);
}
{
auto numbers = range(10).forEach([](auto item) { ("Generated item: "_zs + item).writeln(std::cout); });
for (auto i : numbers) {
}
}
{
auto numbers = range(100).skip(10).limit(5);
auto numbers_array = numbers.collect();
("Contents of array from gen = ["_zs + join(numbers_array, ',') + ']').writeln(std::cout);
}
{
auto numbers = range(10);
auto array1 = numbers.take(5);
auto array2 = numbers.collect();
("Taken items = ["_zs + join(array1, ',') + ']').writeln(std::cout);
("Remaining items = ["_zs + join(array2, ',') + ']').writeln(std::cout);
}
{
{
auto first_10 = range(0, infinity).until(10);
("First 10 numbers (1) = ["_zs + join(first_10.collect(), ',') + ']').writeln(std::cout);
}
{
auto first_10 = range(0, infinity).until([](auto i) { return i >= 10; });
("First 10 numbers (2) = ["_zs + join(first_10.collect(), ',') + ']').writeln(std::cout);
}
}
{
("Tick every 100ms"_zs).writeln(std::cout);
}
("Interval generator finished"_zs).writeln(std::cout);
auto gen =
z::system::interval(10).limit(5).forEach([](
auto) { (
"Tick every 10ms"_zs).writeln(std::cout); });
auto count = gen.consume();
(zstring(count) + " items were consumed"_zs).writeln(std::cout);
}
{
"Peeking at a generator"_zs.writeln(std::cout);
for (auto [first, second] : range(5).peek()) {
auto msg = zstring(first) + " -> " + (second ? zstring(second.value()) : "END");
msg.writeln(std::cout);
}
}
}
A wrapper for std::vector.
Definition array.hpp:38
generator< long, long > range(long begin, long end, long step=1) noexcept
Generate a sequence of integers in a specified range.
const sentinel infinity
A sentinel that tells numeric generators to run forever.
string< E > join(const iterable< T > &list, const string< E > &delim) noexcept
Concatenate elements in an array into a string, separated by a delimiter.
Definition join.hpp:20
core::generator< bool, bool > interval(double millis) noexcept
Create a generator that triggers at regular intervals.