Помогите с циклами lua

sl11de

Участник
Автор темы
57
10
Искал в инете про циклы для LUA начал читать - ничего не понял.
Прошу можете помочь с циклами? Жеательно самые главные циклы и желательно с примерами.
 
Решение
1. Цикл вида for i = x, y do
Данный цикл делает 10 шагов начиная с 1 до 10. Шаг записывается в переменную index, она может быть любой: i, v, myVar и т.п на твой вкус и удобство.
Lua:
for index = 1, 10 do
    print(index)
end;
1
2
3
4
5
6
7
8
9
10
По умолчанию шаг делается по одному, но можно самостоятельно изменить его для каких-то целей. Для этого через запятую указывает третий аргумент, примеру 2. Тем самым получаем цикл, который совершает шаг размером в две единицы. 1 3 5 7 9. Достигая 9-ки, следующий шаг будет 11, но 11 больше, чем наше максимальное число 10, поэтому цикл останавливается.
Lua:
for index = 1, 10, 2 do
    print(index)
end;
1
3
5
7
9
Также как дополнение, может быть такой случай, что требуется...

Hatiko

Известный
Проверенный
1,510
627
Вот хороший источник, по нему много всего изучил по базовому уровню.
 

sl11de

Участник
Автор темы
57
10
Вот хороший источник, по нему много всего изучил по базовому уровню.
там не понятно
 

Hatiko

Известный
Проверенный
1,510
627
1. Цикл вида for i = x, y do
Данный цикл делает 10 шагов начиная с 1 до 10. Шаг записывается в переменную index, она может быть любой: i, v, myVar и т.п на твой вкус и удобство.
Lua:
for index = 1, 10 do
    print(index)
end;
1
2
3
4
5
6
7
8
9
10
По умолчанию шаг делается по одному, но можно самостоятельно изменить его для каких-то целей. Для этого через запятую указывает третий аргумент, примеру 2. Тем самым получаем цикл, который совершает шаг размером в две единицы. 1 3 5 7 9. Достигая 9-ки, следующий шаг будет 11, но 11 больше, чем наше максимальное число 10, поэтому цикл останавливается.
Lua:
for index = 1, 10, 2 do
    print(index)
end;
1
3
5
7
9
Также как дополнение, может быть такой случай, что требуется посчитать не с начала (с единицы), а с конца с десятки в данном случае, т.е. на убывание, и тут возможность указывать шаг нам пригодится. Как нам поступить? Указываем, что отсчёт будет вестись с 10 по 1. Как ранее написал, цикл всегда делает шаг в 1 единицу. Для обратного счёта нужно отрицательное число, которое бы указывало, что каждый следующий шаг будет на единицу меньше. Тем самым получаем следующее:

Lua:
for index = 10, 1, -1 do
    print(index)
end;

10
9
8
7
6
5
4
3
2
1

2. Цикл вида for i, v in ipairs(table) do
Данный вид цикла перебирает содержимое таблиц.
К примеру у нас будет таблица такая:
table = {
"яблоко",
"груша",
"персик"
}
Она состоит из трёх элементов. В таблицах по умолчанию каждому элементу присваивается номер, который равен порядковому номеру элемента, как мы его расположили. Т.е. яблоко у нас первое, груша - второе, персик - третий. При использовании данного типа цикла в переменную i записывается номер, пд которым находится элемент, а в переменную v записывается сам элемент.
Lua:
for i,v in ipairs(table) do
    print(i, v)
end
1 яблоко
2 груша
3 персик
3. Цикл вида for i, v in pairs(table) do
По виду данный цикл отличается от выше описанного тем, что перед методом pairs отсутствует буква i вначале, которая нам говорила, что работает только с индексированными таблицами. Данный цикл перебирает содержимое ассоциативной таблицы, т.е. таблицы в которых вместо номера элемента записывается ключ, этакая переменная в таблице.
Пример таблицы:
table = {
a = "яблоко",
b = "груша",
c = "персик"
}
Сам код:
Lua:
for k,v in pairs(table) do
    print(k, v)
end
a яблоко
b груша
c персик

4. Цикл вида while (условие) do
Данный цикл выполняет код, который находится внутри конструкции данного цикла, пока выполняется указанное условие.
К примеру сделаем условие, что мы будет прибавлять к переменной a число 1, пока переменная меньше 10.

Lua:
a = 0 -- объявляем переменную a, которая будет по умолчанию равно нулю.
while a < 10 do
    a = a + 1 -- в каждом шаге прибавляем к переменной a единицы, тем самым она с каждым шагом становится больше.
end

5. Цикл вида repeat [код] until (условие)
Данный цикл выполняет код до тех пор, пока не выполнится указанное условие. Т.е. прошлый вид цикла выполняется, когда условие работает, а в данном цикле наоборот, код работает, пока не выполняется условие, а когда она выполнится, цикл остановится.
Возьмём следующий пример. По умолчанию у нас переменная a имеет ноль. Выполнится один шаг,т.е. прибавится 1 к переменной и проверится условие, если условие не выполнилось, цикл повторяется. И в конце, когда у нас будет 10 и к ней прибавится 1, т.е. получим 11, проверится условие и оно выполнится, тем самым завершив цикл.
Lua:
a = 0
repeat
    a = a + 1
until a > 10

На этом базовые циклы закончились. Максимально разжевал для детсадовского возраста. Если опять будет не понятно, то мои соболезнования, тебе ещё рано заниматься написанием скриптов, твой склад ума ещё достиг уровня анализа понимания алгоритма, хотя во втором классе это проходят по информатике в виде блоков циклов и т.п.. Либо ты просто ленишься читать и не хочешь этим заниматься.
 
Последнее редактирование:

sxpurp

Известный
126
41
Lua:
local t = { 1, 2, 3, 4, 5 };
for i = #t, 1, t - 1 do
    print(t[i]);
end
p.s. способ говно
что самое странное я всё таки сам допёр и понимаю что гавно но выхода больше нет походу)
но всё равно спасибо

1692048325698.png