неверный цикл в таблице lua - PullRequest
1 голос
/ 07 октября 2019

Я пытаюсь зациклить таблицу в lua, но порядок зацикливания таблицы неверен. Код ниже печатает:

  • ключ: три числа: 3
  • ключ: один номер: 1
  • ключ: два числа: 2

И код:

  testNumbers =
  {
    one = 1,
    two = 2,
    three = 3
  }

for key,num in pairs(testNumbers) do 

print("key : " .. key .. " num: " .. num)

end

Как сделать так, чтобы это было в правильном порядке? Я не могу изменить код слишком сильно, так как мне нужна переменная ключа, как сейчас

Ответы [ 2 ]

4 голосов
/ 08 октября 2019

Таблицы в Lua представляют собой наборы , а не последовательности пар ключ-значение.

Обход таблицы посещает ее пары в неуказанном порядке. См. руководство .

3 голосов
/ 07 октября 2019

Для эффективности таблицы Lua не отслеживают порядок своих ключей. Если вы не можете изменить формат своей таблицы, вы все равно можете навести порядок итераций, сохранив массив ключей и выполнив итерации по нему.

testNumbers =
  {
    one = 1,
    two = 2,
    three = 3
  }

local order = {'one', 'two', 'three'}

for _, key in ipairs(order) do
  print("key : " .. key .. " num: " .. testNumbers[key])
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...