#lua #iteration #lua-table #nested-table
#lua #итерация #lua-таблица #вложенная таблица
Вопрос:
Хорошо, итак, я искал это везде, но нигде нет ответа.
У меня есть вложенная таблица (пример):
{
{
"Username",
"Password",
"Balance",
},
{
"username1",
"password1",
1000000,
},
{
"username2",
"password2",
1000000,
},
}
Дело в том, что я не могу выполнить цикл для просмотра этих таблиц или получить значения из таблиц.
Ни к одной вложенной таблице нельзя получить легкий доступ, например:
print(a[1])
Как мне зациклить их и получить значения из них?
Комментарии:
1. Что происходит, когда вы это делаете
print(a[1])
? Вы пробовалиprint(a[1][1])
?
Ответ №1:
Используйте pairs
или ipairs
для выполнения итерации по таблице:
local t = {
{
"Username",
"Password",
"Balance",
},
{
"username1",
"password1",
1000000,
},
{
"username2",
"password2",
1000000,
},
}
for _, v in ipairs(t) do
print(v[1], v[2],v[3])
end
выведет:
Username Password Balance
username1 password1 1000000
username2 password2 1000000
Комментарии:
1. Я думаю, что в этом случае ipairs — лучший выбор
Ответ №2:
Если у вас есть
a = {
{ "Username", "Password", "Balance", },
{ "username1", "password1", 1000000, },
{ "username2", "password2", 1000000, },
}
Тогда вторым элементом a
будет a[2]
таблица { "username1", "password1", 1000000, }
. Если вы распечатаете это, это будет выглядеть аналогично table: 0x872690
— это просто то, как таблицы печатаются в Lua по умолчанию. Для доступа к внутренним полям вы просто используете те же операторы индексирования. Для первого поля мы делаем a[2][1]
, для второго мы делаем a[2][2]
и так далее.
for i = 2, #a do
print(a[i][1], a[i][2], a[i][3])
end