Вопросы к Поиску с Алисой
Разница между итераторами с сохранением и без сохранения состояния в Lua заключается в том, что итераторы с сохранением состояния запоминают своё состояние между вызовами, а итераторы без сохранения состояния не сохраняют его между вызовами. w3schools.tech telegra.ph
Итераторы без сохранения состояния используют только общие для управляющей переменной цикла и инвариантного состояния для вычисления значения итерации. learntutorials.net Поэтому их можно использовать в нескольких циклах, избегая затрат на создание новых замыканий. www.lua.org
Итераторы с сохранением состояния сложнее, но мощнее: каждый раз при вызове они запоминают, где остановились, и дают следующее значение. w3schools.tech
Пример итератора без сохранения состояния — функция square, которая возвращает следующий номер и его квадрат, или nil, когда итерация завершена. w3schools.tech Пример итератора с сохранением состояния — функция fibonacci, которая каждый раз при вызове запоминает, где остановилась, и даёт следующее число в последовательности Фибоначчи. w3schools.tech