Lua - поиск ключа внутри нескольких таблиц - PullRequest
0 голосов
/ 04 июня 2018

Для моей программы у меня есть несколько таблиц внутри друг друга для организации и удобочитаемости.Эти таблицы могут выглядеть примерно так:

local buttons = { 
      loadingScreen = { 
          bLoadingEnter = function() 
          end 
      }, ... 
}

. Я хочу найти в таблице первый элемент с именем bLoadingEnter.Я не знаю, что элемент с именем bLoadingEnter будет в загрузочном экране.Я подумал о том, чтобы получить все ключи в таблице и проверить их.Я не мог заставить это работать.Любая помощь будет оценена!

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Если скорость выполнения каким-либо образом важна, ответ:

Вы не

Поиск ключа во вложенной таблице занимает много большечем искать его в обычном столе.Следующая проблема - это проблема уникальности.Две или более вложенных таблицы могут иметь один и тот же ключ с разными значениями, что может привести к появлению в будущем странных ошибок.Вам придется либо проверять это при вставке (делая ваш код еще медленнее), либо просто надеяться, что все чудесным образом пойдет хорошо, а потом ничего не взорвется.

Я бы сказал, просто используйте плоскую таблицу.Если ваши ключи имеют правильное имя (например, bLoadingEnter), вы сможете вывести значение из имени в любом случае, вложенность не требуется.

При этом, вложенные таблицы могут бытьхороший вариант, если большую часть времени вы знаете, какой путь выбрать, или когда у вас есть какая-то упорядоченная структура, такая как бинарное дерево поиска.Или, если скорость действительно не является важным фактором для рассмотрения.

0 голосов
/ 04 июня 2018

Хорошо, попробуй

for _, item in ipairs(buttons) do
    if item.bLoadingEnter ~= nil then
        return item.bLoadingEnter
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...