1kovand1 0 Опубликовано: 10 апреля, 2016 А то в официальной документации ничего не понятно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 10 апреля, 2016 А то в официальной документации ничего не понятно вот тебе сделал минигайдик, хотя в документации (ссылочек куча у нас на сайте в сайдбаре) это все разжевано и так уже. Код: local t = {a='bob',b='vasya',c='petya',d=nil, e={3, 5, y='NEO'}; 10, 20, 30, nil, 90} local n=0 local str1, str2='qwerty', 'йцукен' for k,v in pairs(t) do print(k,'-->',v) n=n+1 end print('------------------') print('Длинна списка вместе с записями', n) print(t.e[2]) print(t.e['y']) print(t['a']) print(t.a) print('----------------') for i = 1, #t do print(t[i]) end print('--Оператор длины--') print('Длинна списка (непрерывной последовательности)', #t) print('Строка 1=', #str1,'Строка 2=', #str2) --в байтах Выхлоп: 1 --> 10 2 --> 20 3 --> 30 5 --> 90 a --> bob b --> vasya e --> table: 0x1c06be0 c --> petya ------------------ Длинна списка вместе с записями 8 5 NEO bob bob ---------------- 10 20 30 nil 90 --Оператор длины-- Длинна списка (непрерывной последовательности) 5 Строка 1= 6 Строка 2= 12 Заметь, вышеупомянутый тобой цикл (итератор) выведет(переберет) ВСЕ ключи-значения в таблице, опуская поля, равные nil. Обрати внимание, что цикл выводит ключи-значения для числовых индексов по порядку, в отличии от записей. Оператор длины # юзай аккуратно, так как он ищет только непрерывную последовательность числовых индексов. В старину еще в таблицу раньше для удобства добавляли общепринятое поле n, где ему присваивали количество элементов таблицы. Таблица вида t ={12, 78, 20, nil, 45, nil} оператором длины будет определена, как #t --> 3 Заметь также, что конструктор таблицы можно составлять какой угодно сложности и вложенности, индексы могут быть числовые и текстовые, отделять можно запятой, а блоки точкой с запятой для удобства, значения полей могут быть любых типов (числа, строки, таблицы, функции т.д.) 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 10 апреля, 2016 (изменено) Часть кода моей новой проги: for i,j in pairs (control.keys) do j() end Цикл for i,j in pairs (таблица) do end работает столько раз, сколько ячеек в таблице. При этом каждый раз выводит ключ i и значение j. В данном случае я в таблице храню функции, а ключ - это клавиши, вроде "f" и прочие для управления. Изменено 10 апреля, 2016 пользователем qwertyMAN Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 10 апреля, 2016 (изменено) Часть кода моей новой проги: for i,j in pairs (control.keys) do j()endЦикл for i in pairs (таблица) do end работает столько раз, сколько ячеек в таблице.При этом каждый раз выводит ключ i и значение j. В данном случае я в таблице храню функции, а ключ - это клавиши, вроде "f" и прочие для управления. плохой код, ты не используемую переменную i создаешь, а еще стиль кода плохой. Изменено 10 апреля, 2016 пользователем LeshaInc 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 10 апреля, 2016 (изменено) плохой код, ты не используемую переменную i создаешь, а еще стиль кода плохой. По одной строчке судишь о коде Да это просто пример. Я немного добавил от себя, чтобы показать игроку что кроме самого значения возвращается и ключ i. А то не поймёт и будет нубить. Изменено 10 апреля, 2016 пользователем qwertyMAN Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 10 апреля, 2016 (изменено) По одной строчке судишь о коде Да это просто пример. Я немного добавил от себя, чтобы показать игроку что кроме самого значения возвращается и ключ i. А то не поймёт и будет нубить. одна строка это уже код. ключ принято называть не i, а k. pairs дает ключ (key) и значение (value) k, v ipairs дает индекс (index) и значение (value) i, v Изменено 10 апреля, 2016 пользователем LeshaInc Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
1kovand1 Автор вопроса 0 Опубликовано: 10 апреля, 2016 Раз уж на то пошло, что такое ipairs Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
cyber01 1 704 Опубликовано: 10 апреля, 2016 если не ошибаюсь, то это lua аналог foreach. Перебирает элементы, выводя ключ=>значение Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 10 апреля, 2016 (изменено) одна строка это уже код. ключ принято называть не i, а k. pairs дает ключ (key) и значение (value) k, v ipairs дает индекс (index) и значение (value) i, v Да ладно тебе, у меня в оригинале вообще нет переменной i. Написал только лишь для примера. И это не принципиально в трёх строках использовать именно k и v. Что мешает использовать j? Там всего 3 строки, не кто не запутается в трёх строках если я локальную переменную назову вместо v - j. Могу хоть func назвать, это моё дело. Такое название даже больше подошло бы чем v которое общепринятое. Изменено 10 апреля, 2016 пользователем qwertyMAN Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Quant 442 Опубликовано: 10 апреля, 2016 Ещё есть next(таблица, ключ или nil) → следующая, или первая в случае отсутствия второго аргумента, пара ключ-значение.Иногда бывает полезна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
А то в официальной документации ничего не понятно
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах