|
Программирование на Lua |
|
| Часть I. Язык Глава 4. Операторы |
Оператор for имеет две формы: числовой for и обобщенный for.
Числовой for имеет следующий синтаксис:
for var=exp1,exp2,exp3 do
something
end
Этот цикл будет выполнять something для каждого значения var, начиная с exp1 и до exp2, используя exp3 как шаг инкремента var. Третье выражения необязательно; в случае его отсутстаия, Lua использует единицу в качестве шага инкремента. Как типовой пример такого цикла, можно привести
for i=1,f(x) do print(i) end
for i=10,1,-1 do print(i) end
Цикл for имеет несколько тонкостей that you should learnin order to make good use of it. Во-первых, все три выражения оцениваются однажды, перед началом цикла. Например, в первом примере, f(x) вызывается только один раз. Во-вторых, управляющая переменная является локальной переменной, объявляемой автоматически оператором for, видима только внутри цикла. Типичная ошибка заключается в том, что считают эту переменную существующей после окончания цикла:
for i=1,10 do print(i) end
max = i -- возможна ошибка! Здесь 'i' - глобальная
Если есть необходимость иметь значение управляющей переменной вне цикла (обычно при прерывании цикла), нужно сохранить это значение в другой переменной:
-- поиск значения в списке
local found = nil
for i=1,a.n do
if a[i] == value then
found = i -- сохранение значения 'i'
break
end
end
print(found)
Наконец, в-третьих, нельзя менять значение управляющей переменной: эффект таких изменений непредсказуем. Если необходимо завершить цикл for до его нормального окончания, используйте break.
| Copyright © 2003-2004 Roberto Ierusalimschy. All rights reserved. | Перевод на русский Artem13 |
|