Конструктор generate
Конструктор generate класса Iterable создает
новую ленивую последовательность (iterable), элементы
которой вычисляются динамически при помощи переданной
функции-генератора. В первый параметр мы передаем
целое число count, которое задает количество
элементов для генерации. Второй параметр - это функция
generator, принимающая текущий индекс элемента
и возвращающая значение для этого индекса.
Важной особенностью является ленивость вычислений:
функция-генератор вызывается только тогда, когда
происходит фактический доступ к элементу последовательности.
Если количество элементов count равно нулю,
создается пустая последовательность.
Синтаксис
Iterable.generate(int count, [E generator(int index)?])
Пример
Давайте создадим последовательность из 5 элементов,
где каждый элемент равен своему индексу, и выведем
результат в консоль:
void main()
{
Iterable<int> iter = Iterable.generate(5, (int index) => index);
print(iter.toList());
}
Результат выполнения кода:
[0, 1, 2, 3, 4]
Пример
Давайте сгенерируем последовательность четных чисел,
умножая индекс на 2:
void main()
{
Iterable<int> iter = Iterable.generate(5, (int index) => index * 2);
print(iter.toList());
}
Результат выполнения кода:
[0, 2, 4, 6, 8]
Пример
Давайте создадим последовательность строк, используя значение индекса:
void main()
{
Iterable<String> iter = Iterable.generate(3, (int index) => 'abcde'[index]);
print(iter.toList());
}
Результат выполнения кода:
[a, b, c]
Пример
Давайте проверим, что при count равном 0
создается пустая последовательность:
void main()
{
Iterable<int> iter = Iterable.generate(0, (int index) => index);
print(iter.toList());
print(iter.isEmpty);
}
Результат выполнения кода:
[]
true