Bug #204
closedНе поддерживается совместная работа функций next() и call()
0%
Description
В существующей схеме трансляции сценарных функций для структур итерационных переменных генерируются две функции next и call. Функция next реализована через call (сначала инкрементируется index, затем вызывается call). Если index неположителен call-блок не вызывается.
Это означает, что методы next и call нельзя использовать вместе (либо делается next, и call-блок не вызывает; либо делается call, и call-блок вызывается).
Иногда перед вызовом call необходимо сделать несколько "холостых" итераций (например, когда значений итерационных переменных нет в кэше, и их еще нужно вычислить). Сейчас такой возможности нет.
Updated by Alexey Demakov over 14 years ago
- Status changed from New to Resolved
- Detected in build changed from 100520 to 2.8.292-beta-100520
- Published in build set to 2.8.293-beta-100521
1. index теперь изменяется в начале call функции
2. добавлено поле flags, в котором первый бит - это user_iter_vars_as_is, а второй устанавливается при вызове call() из next() и сбрасывается после вызова.
По такой схеме next и call можно вызывать вперемешку.
Updated by Alexey Demakov over 14 years ago
- Status changed from Resolved to Closed