sequence_object:next()
-
object
sequence_object¶ -
sequence_object:next()¶ Генерация и выдача следующего значения.
Простой алгоритм для генерации:
- В первый раз вернуть НАЧАЛЬНОЕ значение.
- Если предыдущее значение плюс значение УВЕЛИЧЕНИЯ меньше, чем МИНИМАЛЬНОЕ значение, или больше, чем МАКСИМАЛЬНОЕ значение, будет переполнение, поэтому либо выдать сообщение об ошибке (если цикл не задан –
cycle=false) или вернуть МАКСИМАЛЬНОЕ значение (если цикл задан –cycle=true– иstep< 0), или вернуть МИНИМАЛЬНОЕ значение (если цикл задан –cycle=true– иstep> 0).
Если ошибки нет, сохранить результат, который становится «предыдущим значением».
Например, предположим, что для последовательности „S“:
min== -6,max== -1,step== -3,start= -2,cycle= true,- предыдущее значение = -2.
Тогда
box.sequence.S:next()вернет -5, потому что -2 + (-3) == -5.Затем
box.sequence.S:next()снова вернет -1, потому что -5 + (-3) < -6, что будет переполнением, которое вызовет цикл, аmax== -1.Для данной функции необходимы права на запись („write“) на последовательность.
Примечание
Данную функцию не следует использовать в транзакциях между движками (транзакции, в которых используется и движок memtx, и движок vinyl).
Чтобы увидеть предыдущее значение, не изменяя его, сделайте выборку из системного спейса _sequence_data.
-