Lua: последовательность выполнения функции при назначении таблицы - PullRequest
0 голосов
/ 18 февраля 2012

У меня есть таблица Lua и функция индекса, подобная этой:

curIndex = 0

function index()
   curIndex = curIndex + 1
   return curIndex
end

t = {
  one = index(),
  two = index(),
  three = index(),
}

Я знаю, что перебор пар таблиц может дать мне ключи «один», «два», «три» в любом порядке. Это создало достаточно неопределенности, несмотря на опыт и интуитивное чувство, что я хотел задать этот вопрос:

Гарантируется ли, что функция index() выполняется в ожидаемой последовательности синтаксического анализа (один, два, три), так что я могу положиться на t.one со значением индекса 1, t.two == 2, t.three == 3 при все времена?

1 Ответ

2 голосов
/ 18 февраля 2012

Конструктор таблицы поля оцениваются по порядку.Это гарантирует, что элементы, добавленные по индексу к ключу, будут добавлены в порядке.Конструктор вашей таблицы:

t = {
  one = index(),
  two = index(),
  three = index(),
}

эквивалентен:

do
    local temp = {}
    temp["one"] = index()
    temp["two"] = index()
    temp["three"] = index()
    t = temp
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...