#include <iostream>
#include <z/system/interval.hpp>
int main() {
{
auto total_sum = numbers.reduce(0, [](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(0, [](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);
}
{
("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);
}
}
A wrapper for std::vector.
Definition array.hpp:72
A template class for character strings.
Definition string.hpp:62
generator< long, long > range(long begin, long end, long step=1) noexcept
Generate a sequence of integers in a specified range.
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.