MySQL- Руководство разработчика

Инструкция For


Инструкция for имеет две формы, по одной для чисел и таблиц. Числовая версия цикла for имеет следующий синтаксис: stat ::= for name `=' exp1 `,' exp1 [`,' exp1] do block end Инструкция for, подобная: for var = e1 ,e2, e3 do block end является заменителем кода: do local var, _limit, _step = tonumber(e1), tonumber(e2), tonumber(e3) if not (var and _limit and _step) then error() end while (_step>0 and var<=_limit) or (_step<=0 and var>=_limit) do block var = var+_step end end Обратите внимание на следующее:

  • sep=0pt
  • _limit и _step являются невидимыми переменными. Имена здесь даны только для объяснительных целей.
  • Поведение неопределено, если Вы меняете значение var внутри блока.
  • Если третье выражение (step) отсутствует, то используется step 1.
  • Значения limit и step оценены только однажды, перед стартом цикла.
  • Переменная var локальна для инструкции: Вы не можете использовать ее значение после окончания работы for.
  • Вы можете использовать break, чтобы выйти из for. Если Вы нуждаетесь в значении индекса, присвойте его другой переменной перед выходом.

Таблица для инструкции for пересекает все пары (index,value) данной таблицы. Это имеет следующий синтаксис: stat ::= for name `,' name in exp1 do block end Инструкция for, подобная: for index, value in exp do block end равносильна такому коду: do local _t = exp local index, value = next(t, nil) while index do block index, value = next(t, index) end end Обратите внимание на следующее:

  • sep=0pt
  • _t является невидимомй переменномй. Имя здесь дано только для объяснительных целей.
  • Поведение неопределено, если Вы меняете значение index внутри блока.
  • Поведение неопределено, если Вы меняете таблицу _t при работе цикла.
  • Переменнае index и var локальны для инструкции: Вы не можете использовать их значения после окончания работы for.
  • Вы можете использовать break, чтобы выйти из for. Если Вы нуждаетесь в значениях index или value, присвойте их другим переменным перед выходом.
  • Порядок, в котором элементы таблицы будут пересечены, неопределен, даже для числовых индексов. Если Вы хотите пересекать индексы в числовом порядке, используйте числовой вариант for.



Содержание раздела