Project

General

Profile

Bug #204

Не поддерживается совместная работа функций next() и call()

Added by Alexander Kamkin over 9 years ago. Updated about 9 years ago.

Status:
Closed
Priority:
High
Target version:
Start date:
05/20/2010
Due date:
% Done:

0%

Estimated time:
Detected in build:
2.8.292-beta-100520
Platform:
Published in build:
2.8.293-beta-100521

Description

В существующей схеме трансляции сценарных функций для структур итерационных переменных генерируются две функции next и call. Функция next реализована через call (сначала инкрементируется index, затем вызывается call). Если index неположителен call-блок не вызывается.

Это означает, что методы next и call нельзя использовать вместе (либо делается next, и call-блок не вызывает; либо делается call, и call-блок вызывается).

Иногда перед вызовом call необходимо сделать несколько "холостых" итераций (например, когда значений итерационных переменных нет в кэше, и их еще нужно вычислить). Сейчас такой возможности нет.

History

#1

Updated by Alexey Demakov over 9 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 можно вызывать вперемешку.

#2

Updated by Alexey Demakov over 9 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF