Lua — получение значений из вложенных таблиц

#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